使用union时分组

时间:2016-11-28 09:48:03

标签: sql sql-server tsql

我正在尝试将所有两个查询联合起来,其中一个具有group by和另一个只是一个没有表的硬编码值。

SELECT 'All' Category 
UNION
SELECT Category as Category
FROM WV_BlogData
GROUP BY Category
ORDER BY COUNT(BlogDataID) desc

我收到以下错误,如何摆脱这个?

  

消息207,级别16,状态1,行50无效的列名称'BlogDataID'。   Msg 104,Level 16,State 1,Line 50 ORDER BY项目必须出现在   如果语句包含UNION,INTERSECT或EXCEPT,则选择列表   操作

1 个答案:

答案 0 :(得分:5)

将您的UNION包裹在派生表中:

select Category
from
(
    SELECT 'All' Category, 0 as cnt 
    UNION
    SELECT Category as Category, COUNT(BlogDataID) as cnt
    FROM WV_BlogData
    GROUP BY Category
) dt
ORDER BY cnt desc