Как объединить повторяющиеся строки без удаления строк - PullRequest
0 голосов
/ 03 апреля 2019

Возможно, есть похожие вопросы, но я пока не нашел ответов.

У меня есть таблицы ниже

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

1 Ответ

0 голосов
/ 03 апреля 2019

извините, я только что изобрел очень простое решение 'self join'

это код

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'
...