Reputation: 1
I have an MDX query I have been struggling with for a while and just can't seem to get it to fly right!! THe pain point is the subquery that is trying to pull in only those jobs that have a status of anythign BUT "Closed" (DIM PROJECT].[Job Status].&[Closed]}. I know/think I'm maybe missing a parentheses somewhere possibly???
MAybe a second set of eyes would help???
SELECT
NON EMPTY
{
[Measures].[Estimate Extended Amount]
,[Measures].[Estimate Line Total]
,[Measures].[Estimate Markup Amount]
} ON COLUMNS
,NON EMPTY
{
[DIM PROJECT].[Client - Division - Product - Component].[Job Component Number].ALLMEMBERS*
[DIM PROJECT].[Component Description].[Component Description].ALLMEMBERS*
[DIM PROJECT].[Client PO Number].[Client PO Number].ALLMEMBERS*
[DIM PROJECT].[Job Status].[Job Status].ALLMEMBERS*
[DIM PROJECT].[Project Start Date].[Project Start Date].ALLMEMBERS*
[DIM PROJECT].[Project End Date].[Project End Date].ALLMEMBERS*
[DIM FUNCTION].[Function Category].[Function Category].ALLMEMBERS*
[DIM ESTIMATE].[Estimate Number].[Estimate Number].ALLMEMBERS*
[DIM ESTIMATE].[Estimate Status].[Estimate Status].ALLMEMBERS
}
DIMENSION PROPERTIES
MEMBER_CAPTION
,MEMBER_UNIQUE_NAME
ON ROWS
FROM
(
SELECT
{[DIM ESTIMATE].[Estimate Status].&[Approved]} ON COLUMNS
FROM (-{[DIM PROJECT].[Job Status].&[Closed]} ON COLUMNS
(
SELECT
StrToSet
(@DIMPROJECTProduct
,CONSTRAINED
) ON COLUMNS
FROM
(
SELECT
StrToSet
(@DIMPROJECTDivision
,CONSTRAINED
) ON COLUMNS
FROM
(
SELECT
StrToSet
(@DIMPROJECTClient
,CONSTRAINED
) ON COLUMNS
FROM [ESTIMATES]
)
)
)
)
WHERE
(
IIF
(
StrToSet
(@DIMPROJECTClient
,CONSTRAINED
).Count
= 1
,StrToSet
(@DIMPROJECTClient
,CONSTRAINED
)
,[DIM PROJECT].[Client].CurrentMember
)
,IIF
(
StrToSet
(@DIMPROJECTDivision
,CONSTRAINED
).Count
= 1
,StrToSet
(@DIMPROJECTDivision
,CONSTRAINED
)
,[DIM PROJECT].[Division].CurrentMember
)
,IIF
(
StrToSet
(@DIMPROJECTProduct
,CONSTRAINED
).Count
= 1
,StrToSet
(@DIMPROJECTProduct
,CONSTRAINED
)
,[DIM PROJECT].[Product].CurrentMember
)
)
CELL PROPERTIES
VALUE
,BACK_COLOR
,FORE_COLOR
,FORMATTED_VALUE
,FORMAT_STRING
,FONT_NAME
,FONT_SIZE
,FONT_FLAGS;
Upvotes: 0
Views: 301
Reputation: 634
I am not quite sure what you are trying to do, but it seems like you might be over complicating your query a little bit. I think the function you are looking for is EXCEPT:
Except([DIM PROJECT].[Job Status].[All].Children,[DIM PROJECT].[Job Status].&[Closed])
This will give you all job statuses except closed. If you put it in your where clause (ymmv with my simplification) it might read:
SELECT
NON EMPTY
{
[Measures].[Estimate Extended Amount]
,[Measures].[Estimate Line Total]
,[Measures].[Estimate Markup Amount]
} ON COLUMNS
,NON EMPTY
{
[DIM PROJECT].[Client - Division - Product - Component].[Job Component Number].ALLMEMBERS*
[DIM PROJECT].[Component Description].[Component Description].ALLMEMBERS*
[DIM PROJECT].[Client PO Number].[Client PO Number].ALLMEMBERS*
[DIM PROJECT].[Job Status].[Job Status].ALLMEMBERS*
[DIM PROJECT].[Project Start Date].[Project Start Date].ALLMEMBERS*
[DIM PROJECT].[Project End Date].[Project End Date].ALLMEMBERS*
[DIM FUNCTION].[Function Category].[Function Category].ALLMEMBERS*
[DIM ESTIMATE].[Estimate Number].[Estimate Number].ALLMEMBERS*
[DIM ESTIMATE].[Estimate Status].&[Approved]
}
DIMENSION PROPERTIES
MEMBER_CAPTION
,MEMBER_UNIQUE_NAME
ON ROWS
FROM [ESTIMATES]
WHERE
( StrToSet(@DIMPROJECTProduct),
StrToSet(@DIMPROJECTDivision),
StrToSet(@DIMPROJECTClient),
Except([DIM PROJECT].[Job Status].[All].Children,[DIM PROJECT].[Job Status].&[Closed]))
If your parameters happen to be single members you can probably just use StrToMember in the where clause.
Upvotes: 2