【发布时间】:2018-03-23 04:26:00
【问题描述】:
使用GROUP BY ... WITH ROLLUP 时,小计/总计行由分组列中的NULL 值指示。这是一个不错的功能,但我希望总数低于明细值,但 NULLs 会在开头进行排序。
例子:
SELECT Year, Quarter, SUM(Amount) AS Amount
FROM Table
GROUP BY Year, Quarter WITH ROLLUP
ORDER BY Year, Quarter
Year|Quarter|Amount Year|Quarter|Amount
----|-------|------ ---> ----|-------|------
NULL| NULL| 120 1999| 1| 10
1999| NULL| 40 1999| 2| 10
1999| 1| 10 1999| 3| 10
1999| 2| 10 1999| 4| 10
1999| 3| 10 1999| NULL| 40
1999| 4| 10 2000| 1| 20
2000| NULL| 80 2000| 2| 20
2000| 1| 20 2000| 3| 20
2000| 2| 20 2000| 4| 20
2000| 3| 20 2000| NULL| 80
2000| 4| 20 NULL| NULL| 120
最后如何获得?
我知道我可以将 NULL 值替换为按预期排序的值,可能在其他列中,但这是一个糟糕的解决方法。
【问题讨论】:
-
编辑问题以添加样本数据和所需的输出,这有助于得出解决方案。
-
另一种解决方案,是先对 NULL 值进行排序,然后再休息。
-
@YogeshSharma 添加了示例,很好的建议。但我不明白你的替代解决方案。你能解释一下吗?