我想对我的数据进行嵌套分组/聚合,但我希望扁平化输出,以便只获得外部组将生成的行
2级嵌套组输出通常如下所示:
+-----------+-----------+---------------+
|outer_group|inner_group|aggregate_value|
+-----------+-----------+---------------+
| 8|dist_yes | 191.0|
| 8|dist_no | 83.0|
| 9|dist_yes | 135.0|
| 9|dist_no | 89.0|
+-----------+-----------+---------------+但是我想要的是三列,第一列是外部组,第二列是"dist_no",“dist_no”是聚合,第三列是"dist_yes","dist_yes“是聚合。
将有两行,outer_group数为8,9,dist_no数为83,89,dist_yes数为191,135
我尝试在select语句中使用子查询,并从group by列表中取出dist_yes_no字段,但是子查询需要引用dist_yes_no字段,这意味着它必须在group by列表中(至少使用我正在使用的H2 ),我又回到了开始的位置
有什么想法?谢谢
发布于 2013-12-21 02:40:25
像这样的东西会有帮助吗?
select a.outer_group, a.aggr_dist_no, b.aggr_dist_yes from
(select outer_group,
sum(value) as aggr_dist_no,
null as aggr_dist_yes
where inner_group = dist_no
group by outer_group) a
join
(select outer_group,
null as aggr_dist_no,
sum(value) as aggr_dist_yes
where inner_group = dist_yes
group by outer_group) b
on a.outer_group = b.outer_grouphttps://stackoverflow.com/questions/20709642
复制相似问题