如何使用ROLLUP将总计移到结果集的底部?

时间:2019-04-16 16:50:33

标签: sql sql-server

这是我的桌子: enter image description here

这是我的查询和结果集:

SELECT S.STATE AS State,
       S.City AS City , COUNT(City) AS [Stores in City]
FROM tStore S
GROUP BY ROLLUP(STATE, City)
ORDER BY State, COUNT(City)

enter image description here

总计行位于顶部!如何使其显示在底部?

4 个答案:

答案 0 :(得分:1)

使用状态State IS NULL不能正确地对具有NULL值的行进行排序。

您应使用ORDER BY GROUPING(State), ...强制将总计拖到最后一行。

答案 1 :(得分:1)

您可以在postgres中使用实际字段和GROUPING子句的组合:

ORDER BY 
    GROUPING(State),
    State,
    GROUPING(City),
    City

答案 2 :(得分:0)

您的“ ORDER BY状态”导致NULL值上升到顶部。只需将您的“ ORDER BY”更改为:

ORDER BY case when State IS NULL then 2 else 1 end

答案 3 :(得分:0)

您也可以使用grouping sets

GROUP BY GROUPING SETS ( (STATE, City), (STATE), () )