Sql Order By子句不适用于GROUP By
我正在尝试使用以下按小时计算订单数量的功能:Sql Order By子句不适用于GROUP By,sql,sql-server-2008,group-by,Sql,Sql Server 2008,Group By,我正在尝试使用以下按小时计算订单数量的功能: SELECT COUNT(id) total, DATENAME(HOUR, purchased_on) label, site FROM dhs.dbo.orders WHERE purchased_on >= '01/16/2013' GROUP BY DATENAME(HOUR, purchased_on), site ORDER BY label DESC 尽管我使用了and ORDER BY子句,但我得到了以
SELECT
COUNT(id) total,
DATENAME(HOUR, purchased_on) label,
site
FROM dhs.dbo.orders
WHERE purchased_on >= '01/16/2013'
GROUP BY DATENAME(HOUR, purchased_on), site
ORDER BY label DESC
尽管我使用了and ORDER BY子句,但我得到了以下结果,该子句应该将它们从最高标签排列到最低标签:
total label site
2 9 AMAZON
1 9 DHS
2 8 AMAZON
1 7 AMAZON
1 6 AMAZON
1 4 AMAZON
1 12 AMAZON
3 11 AMAZON
1 10 AMAZON
1 10 DHS
为什么订单不按工作进行
DATENAME
返回一个VARCHAR
将其替换为DATEPART
:
SELECT COUNT(id) total,
DATEPART(HOUR, purchased_on) label,
site
FROM dhs.dbo.orders
WHERE purchased_on >= '01/16/2013'
GROUP BY
DATEPART(HOUR, purchased_on), site
ORDER BY
label DESC
DATENAME
返回一个VARCHAR
将其替换为DATEPART
:
SELECT COUNT(id) total,
DATEPART(HOUR, purchased_on) label,
site
FROM dhs.dbo.orders
WHERE purchased_on >= '01/16/2013'
GROUP BY
DATEPART(HOUR, purchased_on), site
ORDER BY
label DESC
你是对的,只是检查了DATENAME的返回值和它的varchar。谢谢你的帮助。你是对的,只是检查了DATENAME的返回值,它是一个varchar。谢谢你的帮助。