這是正在發生的事情證明:
WITH
MEMBER measures.NumberOfSameWeekDays AS
Count([Date].[Day of Week].CurrentMember)
MEMBER measures.WeekDayCurrentMem AS
[Date].[Day of Week].CurrentMember.Member_Caption
SELECT
{
measures.NumberOfSameWeekDays
,measures.WeekDayCurrentMem
} ON COLUMNS
,[Date].[Day of Week].[Day of Week] ON ROWS
FROM [Adventure Works]
WHERE
[Date].[Calendar].[Date].&[20050101]
:
[Date].[Calendar].[Date].&[20050116];
這裏是上面的結果:
![enter image description here](https://i.stack.imgur.com/1LsJH.png)
這裏是上述行爲的解決方案:
WITH
MEMBER measures.NumberOfSameWeekDays AS
Count
(
(EXISTING
[Date].[Day of Week].CurrentMember * [Date].[Calendar].[Date])
)
SELECT
{
measures.NumberOfSameWeekDays
} ON COLUMNS
,[Date].[Day of Week].[Day of Week] ON ROWS
FROM [Adventure Works]
WHERE
[Date].[Calendar].[Date].&[20050101]
:
[Date].[Calendar].[Date].&[20050131];
這將返回以下:
![enter image description here](https://i.stack.imgur.com/Stf18.png)
Sourav的答案的簡化版本 - 雖然仍然相當複雜 - 可能緩慢,因爲它使用的生成是迭代:
WITH
MEMBER Measures.CountOfDays AS
Generate
(
(EXISTING
[Date].[Date].[Date].MEMBERS)
,[Date].[Day of Week]
,ALL
).Count
SELECT
Measures.CountOfDays ON 0
,[Date].[Day of Week].[Day of Week].MEMBERS ON 1
FROM [Adventure Works]
WHERE
[Date].[Calendar].&[2005] : [Date].[Calendar].&[2006];
這將始終返回1:'Count( .currentmember上使用的某個層次結構)'...因爲結果集的上下文中有1個成員是_currently_。 –
whytheq
你能舉一個代碼示例嗎? – Timsen
'.CurrentMember'是一個函數,它返回行上的成員 - 如果一行上有一個成員,則它返回1.不需要示例。在你星期二說的那個行的腳本中,'.Currentmember'函數計算星期二在星期二排行了多少次...... 1. – whytheq