如何修改GROUPING SETS分组结果首列的NULL值为自定义内容
解决方案
你可以通过CASE语句结合GROUPING()函数识别汇总行,替换指定列的NULL值为自定义文本。修改后的SQL语句如下:
SELECT CASE WHEN GROUPING(column1) = 1 THEN 'SubTotal' ELSE column1 END AS Name1, column2 AS Name2, SUM(column3) AS QTT FROM my_table GROUP BY GROUPING SETS ((column1, column2), ())
关键说明
GROUPING(column1)函数:当该行是GROUPING SETS中空分组()生成的汇总行时,对column1返回1;基于column1, column2分组的行则返回0。CASE语句:利用上述判断结果,将汇总行的column1值替换为SubTotal,其他行保留原column1的值。
执行后返回结果符合预期:
| Name1 | Name2 | QTT |
|---|---|---|
| AB | CD | 15 |
| ZE | EF | 15 |
| SubTotal | None | 30 |
内容的提问来源于stack exchange,提问作者TourEiffel
相关产品推荐
相关产品推荐

