使用MDX查询从日期范围中获取特定日期的时间表

问题描述 投票:1回答:1

我已多次发布此问题,但遗憾的是没有人能理解,我很抱歉我的英语很差:( 我重新制定......

我有以下事实表enter image description here

我希望在所有日期范围内获得与特定日期和星期几(JOUR)匹配的记录(DATE_DEB,DATE_FIN)

我可以在SQL中这样做:

SELECT  DATE_DEB, 
DATE_FIN,
ID_HOR,
to_char(HR_DEB,'hh24:mi:ss') as HR_DEB,
to_char(HR_FIN,'hh24:mi:ss') as HR_FIN,
JOUR
FROM  GRP_HOR HOR, GRP
WHERE GRP.ID_ACTIV_GRP = HOR.ID_ACTIV_GRP
AND TO_DATE('1998-01-08', 'YYYY-MM-DD') between DATE_DEB and DATE_FIN
AND 1 + TRUNC(TO_DATE('1998-01-08', 'YYYY-MM-DD')) - TRUNC(TO_DATE('1998-01-08', 'YYYY-MM-DD'), 'IW') = JOUR

所以,我将获得29条记录(见下文),其中包括每个范围并与星期几(JOUR)匹配,之后我想按小时放大它们(HR_DEB,HR_FIN)。

问题是,最好的方法是什么?

  • 创建2个日期维度并使用DATE_DEB,DATE_FIN链接它们。
  • 创建2个时间维度并将其与HR_DEB,HR_FIN链接。

如何在MDX中实现SQL之间的子句?或大于或小于?

先感谢您。

输出: enter image description here

ssas mdx between dimensional-modeling
1个回答
1
投票

要在MDX中指定日期范围,您只需使用冒号运算符:

这是关于MSDNhttps://docs.microsoft.com/en-us/sql/mdx/range-mdx?view=sql-server-2017的文档

这是他们给出的例子:

With Member [Measures].[Freight Per Customer] as  
 (  
     [Measures].[Internet Freight Cost]  
     /   
     [Measures].[Customer Count]  
)  
SELECT   
    {[Ship Date].[Calendar].[Month].&[2004]&[1] : [Ship Date].[Calendar].[Month].&[2004]&[3]} ON 0,  
    [Product].[Category].[Category].Members ON 1  
FROM  
    [Adventure Works]  
WHERE  
    ([Measures].[Freight Per Customer])  
© www.soinside.com 2019 - 2024. All rights reserved.