sql - 在 sql 中按月份和年份排序并求和

标签 sql sql-server

我有一个存储过程,选择语句是:

SELECT     { fn MONTHNAME(OrderDate) } AS MonthName, YEAR(OrderDate) AS Year, SUM(TotalValue) AS Profits
FROM         [Order]
WHERE     (YEAR(OrderDate) = @year)
GROUP BY { fn MONTHNAME(OrderDate) }, YEAR(OrderDate)

这显示每个月的总和 但我需要按月和年对结果进行排序,因为我的结果显示如下:

April 2013 
February 2013 
January 2013 
June 2013 
March 2013 
May 2013 

遇到这种情况有什么解决办法吗?

最佳答案

试试这个:

SELECT     { fn MONTHNAME(OrderDate) } AS MonthName, YEAR(OrderDate) AS Year, SUM(TotalValue) AS Profits
FROM         [Order]
WHERE     (YEAR(OrderDate) = @year)
GROUP BY { fn MONTHNAME(OrderDate) }, MONTH(OrderDate), YEAR(OrderDate)
order by Year(orderDate),month(OrderDate)

请注意,您需要将排序依据的任何字段添加到 group by 子句中

关于sql - 在 sql 中按月份和年份排序并求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17271316/

相关文章:

如果值为零,SQL 不返回列

c# - C# 或 SQL 中的隔离级别 - 将使用哪一个?

sql-server - CHECKSUM 和 CHECKSUM_AGG : What's the algorithm?

sql - 如何对时间段进行分组并检查休息时间

mysql - sql查找并删除带有trim的重复列

sql - 如何将值插入到具有外键关系的两个表中?

每行有多个子查询的Mysql查询

sql-server - 参差不齐的右和固定长度之间的区别

sql - 如何在SQL Server 2005中定义ENUM?

java - 执行查询时出错