我有一个 SQL Server CE 3.5 表(交易)具有以下架构:
- ID
- 交易日期
- Category
- 描述
- Amount
Query:
SELECT Transaction_Date, SUM(Amount)
FROM Transactions
GROUP BY Transaction_Date;
我正在尝试执行 SUM(Amount) 并按 transaction_date 进行分组,这样我就可以获得每天的总金额,但我想取回值,即使是没有交易的日子,所以基本上是没有交易的一天的记录金额仅为 0.00 美元。
谢谢您的帮助!
您需要一个日历表来选择日期。或者,如果您有数字表,则可以将其有效地转换为日历表。基本上,它只是一个包含每个日期的表。为其构建和生成数据非常容易,并且在这些情况下非常方便。然后你只需使用:
SELECT
C.calendar_date,
SUM(T.amount)
FROM
Calendar C
LEFT OUTER JOIN Transactions T ON
T.transaction_date = C.calendar_date
GROUP BY
C.calendar_date
ORDER BY
C.calendar_date
需要记住以下几点:
如果您要将其发送到前端或报告引擎,那么您应该只发送您拥有的日期(您的原始查询),并让前端填写 0.00 美元的天数(如果可能)。
另外,我在这里假设日期是一个精确的日期值,没有时间部分(因此连接中的“=”)。您的日历表可以包含“start_time”和“end_time”,以便您可以使用 BETWEEN 来处理包含时间部分的日期。这使您不必削减时间部分并可能破坏索引的使用。您也可以在使用它时计算一天的开始和结束点,但由于它是一个预填充的工作表,因此在我看来更容易包含开始时间和结束时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)