分组依据并添加列

2023-12-27

我有一个名为“ward_councilors”的表和两列“ward”和“councillor”。该表包含所有议员及其负责的选区的列表。每个选区有三名议员,我需要做的是分组,以便每个选区有一个不同的记录和三个新列,每个列由三名议员负责该选区。

例如目前有:

WARD   | COUNCILLOR
ward a | cllr 1
ward a | cllr 2
ward a | cllr 23
ward b | cllr 4
ward b | cllr 5
ward b | cllr 8

试图实现:

WARD    | COUNCILLOR 1| COUNCILLOR 2| COUNCILLOR 3
ward a  | cllr 1      | cllr 2      | cllr 23
ward b  | cllr 4      | cllr 5      | cllr 8

提前致谢, 克里斯


我倾向于使用条件聚合来处理此类查询:

select ward,
       max(case when seqnum = 1 then councillor end) as councillor1,
       max(case when seqnum = 2 then councillor end) as councillor2,
       max(case when seqnum = 3 then councillor end) as councillor3
from (select wc.*,
             row_number() over (partition by ward order by councillor) as seqnum
      from ward_councillors wc
     ) wc
group by ward;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分组依据并添加列 的相关文章

随机推荐