鉴于此表,我需要按月生成年初至今的摘要。结果应该是一年中每个月的一行,以及截至该月的年度的运行总计。在SQL方面我不是新手,但我仍然不知道如何在纯SQL中实现这一点。有谁知道如何做到这一点?请注意,它需要与Microsoft Access SQL兼容。
projectTitle | completionDate | amount
---------------------------------------
'Project #1' | 2013-01-12 | 1234
'Project #2' | 2013-01-25 | 4567
'Project #3' | 2013-02-08 | 8901
'Project #4' | 2013-02-15 | 2345
'Project #5' | 2013-02-20 | 6789
'Project #6' | 2013-03-01 | 1234
'Project #7' | 2013-04-12 | 5678
'Project #8' | 2013-05-06 | 9012
'Project #9' | 2013-05-20 | 3456
'Project #10' | 2013-06-18 | 7890
'Project #11' | 2013-08-10 | 1234
预期结果的示例
month | amount
-----------------
'Jan-13' | 5801 -- = Project #1 + Project #2 + Project #3
'Feb-13' | 23836 -- = Project #1 + Project #2 + Project #3 + Project #4 + Project #5
'Mar-13' | 25070 -- ...and so on
'Apr-13' | 30748
'May-13' | 43216
'Jun-13' | 51106
'Jul-13' | 51106
'Aug-13' | 52340
在我的示例输出中,您可能会注意到我包含了7月,即使示例表没有7月的任何数据。理想情况下,输出仍然包括7月,如您在示例输出中看到的那样,但是如果有必要,我可以不用。
答案 0 :(得分:1)
我通过使用子查询找到答案,并使用别名作为表名。
SELECT FORMAT(t1.completionDate,"mmm-yy") AS [month], (
SELECT SUM(t2.amount)
FROM projects AS t2
WHERE MONTH(t2.completionDate) <= MONTH(t1.completionDate)
) AS [amount]
FROM projects AS t1;
答案 1 :(得分:0)
答案 2 :(得分:0)
Select Month(CompletionDate) as MthComplete, Year(CompletionDate) as YrComplete, AMT as Sum(Amount)
From MyTable
Group By Year(CompletionDate), Month(CompletionDate)
Order By Year(CompletionDate), Month(CompletionDate)
您可能需要使用另一列putz来获取您在输出示例中使用的年/月格式,但这会按照您希望的方式对数据进行分组。