SQL Server中替换ROLLUP分组生成的NULL值问题求助
解决ROLLUP分组后Col_2列NULL值替换问题
针对你使用GROUP BY ROLLUP生成的汇总行中Col_2列出现NULL的情况,可以通过窗口函数结合COALESCE函数将NULL替换为对应分组的实际值,以下是修改后的SQL语句:
SELECT col_1, COALESCE(col_2, MAX(col_2) OVER(PARTITION BY col_1)) AS col_2, col_3, SUM(col_4) AS col_4, SUM(col_5) AS col_5, SUM(col_6) AS col_6 FROM your_table GROUP BY ROLLUP(col_1, col_2, col_3)
原理说明
MAX(col_2) OVER(PARTITION BY col_1):在同一个col_1分组内,获取所有非空的col_2值(示例中同一col_1=A下的col_2均为B,所以MAX结果为B)。COALESCE(col_2, ...):如果当前行的col_2是NULL(即ROLLUP生成的汇总行),就用窗口函数获取到的值替换,否则保留原col_2值。
执行该语句后,汇总行的Col_2会被替换为对应分组的实际值,符合你需要的输出结果。
内容的提问来源于stack exchange,提问作者som_1522
相关产品推荐
相关产品推荐

