使用union时分组

Sma*_*EGA 1 sql t-sql sql-server

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

SELECT 'All' Category 
UNION
SELECT Category as Category
FROM WV_BlogData
GROUP BY Category
ORDER BY COUNT(BlogDataID) desc
Run Code Online (Sandbox Code Playgroud)

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

消息207,级别16,状态1,行50无效的列名称'BlogDataID'.如果语句包含UNION,INTERSECT或EXCEPT运算符,则消息104,级别16,状态1,行50 ORDER BY项必须出现在选择列表中.

jar*_*rlh 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
Run Code Online (Sandbox Code Playgroud)