微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL Server按月分组

如何解决SQL Server按月分组

SELECT CONVERT(NVARCHAR(10), PaymentDate, 120) [Month], SUM(Amount) [TotalAmount]
FROM Payments
GROUP BY CONVERT(NVARCHAR(10), PaymentDate, 120)
ORDER BY [Month]

您也可以尝试:

SELECT DATEPART(Year, PaymentDate) Year, DATEPART(Month, PaymentDate) Month, SUM(Amount) [TotalAmount]
FROM Payments
GROUP BY DATEPART(Year, PaymentDate), DATEPART(Month, PaymentDate)
ORDER BY Year, Month

解决方法

我有一个具有此架构的表

ItemID    UserID    Year    IsPaid    PaymentDate  Amount
1         1         2009    0         2009-11-01  300
2         1         2009    0         2009-12-01  342
3         1         2010    0         2010-01-01  243
4         1         2010    0         2010-02-01  2543
5         1         2010    0         2010-03-01  475

我正在尝试使查询工作显示每个月的总数。到目前为止,我已经尝试过DateDiff和嵌套选择,但都没有给我想要的东西。我认为这是最接近的:

DECLARE @start [datetime] = 2010/4/1;
SELECT ItemID,IsPaid,(SELECT SUM(Amount) FROM Payments WHERE Year = 2010 And DateDiff(m,PaymentDate,@start) = 0 AND UserID = 100) AS "Apr",(SELECT SUM(Amount) FROM Payments WHERE Year = 2010 AND DateDiff(m,@start) =1 AND UserID = 100) AS "May",@start) =2 AND UserID = 100) AS "Jun",@start) =3 AND UserID = 100) AS "Jul",@start) =4  AND UserID = 100) AS "Aug",@start) =5  AND UserID = 100) AS "Sep",@start) =6  AND UserID = 100) AS "Oct",@start) =7 AND UserID = 100) AS "Nov",@start) =8 AND UserID = 100) AS "Dec",@start) =9 AND UserID = 100) AS "Jan",@start) =10 AND UserID = 100) AS "Feb",@start) =11 AND UserID = 100) AS "Mar" 
FROM LIVE L INNER JOIN Payments I ON I.LiveID = L.RECORD_KEY 
WHERE UserID = 16178

但是当我应该获取值时,我只会得到空值。我想念什么吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。