【发布时间】:2023-04-07 07:47:02
【问题描述】:
我有事实和日期维度表。我需要编写一个查询,为每个日期成员返回其聚合函数(sum(amount))。但是这个聚合函数需要根据日期进行过滤。
FACT table: InvFactMain
Dim table: Dates
目前我有这个查询:
SELECT D.DATE
,(
SELECT sum(inline.InventoryRetailAmount)
FROM InvFactMain inline
WHERE inline.DocumentDate >= DATEADD(day, - @x, D.DATE)
AND inline.DocumentDate < dateadd(day, - @y, D.DATE)
) AS [RetailAmount]
FROM InvFactMain F
JOIN Dates D ON D.Date_ID = F.DateId
GROUP BY D.DATE
我确信有更好、更有效的方法来实现它。
• 我使用的是 SQL 2012,所以我可以使用分析函数如 LAG、LEAD 等。
有什么想法吗?
【问题讨论】:
-
请您提供更多详细信息,但此聚合函数需要根据返回日期进行过滤
标签: sql sql-server performance tsql