我有一个存储过程,select语句是:
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)
Run Code Online (Sandbox Code Playgroud)
这显示了每个月的总和但我需要按月和年订购结果因为我的结果显示如下:
April 2013
February 2013
January 2013
June 2013
March 2013
May 2013
Run Code Online (Sandbox Code Playgroud)
在这种情况下,解决方案是什么?
Bob*_*ale 13
试试这个:
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)
Run Code Online (Sandbox Code Playgroud)
请注意,您需要将您订购的任何字段添加到group by子句中
只需添加
Order by max(OrderDate)
Run Code Online (Sandbox Code Playgroud)
在最后。
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)
Order by max(OrderDate)
Run Code Online (Sandbox Code Playgroud)
现在介绍一下它是如何工作的:
如果您分别按月、年排序,则会按字母顺序按月份升序排列(四月在一月之前)。如果您按订单日期订购,则 ID 将根据日期值进行排序,当然日期值是按月/年排序的。
| 归档时间: |
|
| 查看次数: |
63406 次 |
| 最近记录: |