如何在不删除行的情况下合并重复行

问题描述 投票:0回答:1

可能有类似的问题,但我还没有找到答案。

我有下表

id | lang_code |  name
1010522747 | CHT | Si Li Ai Guang You Zhi Yuan
1010522747 | ENG | Si Li Ai Guang Kindergarten
1010522758 | CHT | Tai Bei Shi Li Wen Hu Guo Min Xiao Xue
1010522758 | ENG | Tai Bei Shi Li Wen Hu Elementary School
1010522760 | CHT | Xiang He Yao Ju
1010522760 | ENG | Xiang He Pharmacy
1010522754 | CHT | Guan Shan De Bian Dang
1010522758 | CHT | Tai Bei Shi Li Wen Hu Guo Min Xiao Xue

基本上这些数据是关于台湾本地商店的名称而不是所有行都有英文或音译名称。 (换句话说,在某些情况下,只有音译名称,而不是同时具有英文和音译名称)

我想要的是我希望使用id字段可以轻松地连接行。例如,

所以这是我到目前为止所做的代码。

select id, lang_code, (case when lang_code = 'ENG' then name_dp end) as name_en, 
(case when lang_code = 'CHT' then name_dp end) as name_trans

结果如下

id | lang_code |  name_en | name_trans
1010522747 | CHT | NULL              | Si Li Ai Guang You Zhi Yuan
1010522747 | ENG |Si Li Ai Guang Kindergarten | NULL
1010522749 | CHT | NULL              | A Cai Yu Chi Rou Geng
1010522750 | CHT | NULL              | Ju Jiang Dian Nao
1010522754 | CHT | NULL              | Guan Shan De Bian Dang
1010522758 | CHT | NULL              | Tai Bei Shi Li Wen Hu Guo Min Xiao Xue
1010522758 | ENG | Tai Bei Shi Li Wen Hu Elementary School | NULL

我希望结果与下面相同。

id | name_merged
1010522747 | Si Li Ai Guang Kindergarten | Si Li Ai Guang You Zhi Yuan
1010522749 | A Cai Yu Chi Rou Geng
1010522750 | Ju Jiang Dian Nao
1010522754 | Guan Shan De Bian Dang
1010522758 | Tai Bei Shi Li Wen Hu Elementary School | Tai Bei Shi Li Wen Hu Guo Min Xiao Xue
postgresql merge duplicates
1个回答
0
投票

对不起,我刚刚提出了非常简单的解决方案'自我加入'

这是代码

select a.poi_id, coalesce(a.name_dp, b.name_dp) as name_merged, a.name_dp as name_en, b.name_dp as name_trans
from MYTABLE as a
left join MYTABLE as b
on a.id = b.id and b.lang_code = 'CHT'
where a.lang_code = 'ENG'
© www.soinside.com 2019 - 2024. All rights reserved.