微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在使用“逐个汇总”时区分NULL

如何解决在使用“逐个汇总”时区分NULL

好问题。我可以想到的一种选择是:

select COALESCE(a, -1) AS a, COALESCE(b, -1) AS b, sum(c) 
from <table> 
group by COALESCE(a, -1), COALESCE(b, -1) with rollup;

解决方法

当我使用group by ... with rollup以下命令运行查询时:

select a,b,sum(c) 
from <table> 
group by a,b with rollup;

我在查询的PK(即分组依据列)中得到了重复的行(我认为是):

+------+------+--------+
| a    | b    | sum(c) |
+------+------+--------+
| NULL | NULL |     13 |
| NULL |    1 |      4 |
| NULL |    3 |      8 |
| NULL |    4 |      9 |
| NULL | NULL |     34 |
|    1 |    3 |     17 |
|    1 |    4 |   NULL |
|    1 |   17 |      2 |
|    1 | NULL |     19 |
|    2 | NULL |      6 |
|    2 |    1 |     17 |
|    2 |    3 |     17 |
|    2 | NULL |     40 |
|    4 |   17 |      2 |
|    4 | NULL |      2 |
|    5 | NULL |     11 |
|    5 |    6 |      7 |
|    5 | NULL |     18 |
|   13 |    4 |      2 |
|   13 | NULL |      2 |
|   14 |   41 |      3 |
|   14 | NULL |      3 |
|   18 |    1 |      2 |
|   18 | NULL |      2 |
|   41 |    2 |     17 |
|   41 | NULL |     17 |

…更多行跟随…

如何区分(NULL,NULL,13)(NULL,34)
也就是说,如何区分由于基础数据而为空的行和因汇总而添加为空的行?(请注意,还有更多示例-(2,6)(2,40)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。