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。谢谢你的帮助。