这是我的查询,也是我求和2列或更多列的目标
SELECT field, sum(cnt)
FROM (
SELECT column1 as field, count(*) as cnt
FROM table
GROUP BY column1
UNION ALL
SELECT column2 as field, count(*) as cnt
FROM table
GROUP BY column2
order by field asc
)
GROUP BY field
ORDER BY sum(cnt) DESC
我弄错了,有人看错了线路。非常感谢。
ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非同时指定了TOP、OFFSET或FOR XML。
您的查询可以更容易地表示为:
select v.field, count(*)
from t cross apply
(values (column1), (column2)) v(field)
group by v.field
order by count(*) desc;
这也可能具有更好的性能。
注意:正如我在评论中所说,如果您只是删除子查询中的order by
,那么您的版本就可以工作了。