SQL求和计数2列或更多列



这是我的查询,也是我求和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,那么您的版本就可以工作了。

最新更新