Возможно ли объединение нескольких строк

#postgresql

Вопрос:

Я ищу способ соединить две строки с одинаковым значением (промо-код в моем случае). Так, например, у меня есть таблица:

 ID PROMO_CODE PROMO_NAME DESCRIPTION LANGUAGE 1 PC123 ABC Desc in English ENG 2 PC123 CBA Desc in Español ESP  

и я хочу получить такой результат, как:

 ID PROMO_CODE PROMO_NAME_ENG PROMO_NAME_ESP DESCRIPTION_ENG DESCRIPTION_ESP 1 PC123 ABC CBA Desc in English Desc in Español  

Любая помощь будет признательна

Комментарии:

1. Всегда ли есть обе строки? Если нет, то какой язык гарантированно существует?

2. на данный момент это всегда обе строки, но в будущем их может быть больше двух

Ответ №1:

Присоединяйтесь PROMO_CODE :

 select  a.ID,  a.PROMO_CODE,  a.PROMO_NAME as PROMO_NAME_ENG,  b.PROMO_NAME as PROMO_NAME_ESP,  a.DESCRIPTION as DESCRIPTION_ENG,  b.DESCRIPTION as DESCRIPTION_ESP from mytable a left join mytable b on b.PROMO_CODE = a.PROMO_CODE  and b.LANGUAGE = 'ESP' where a.LANGUAGE = 'ENG'  

Использование левого соединения гарантирует ENG данные, даже если ESP данные не существуют, что кажется возможным из ENG ID за того, что они находятся на выходе, но не ESP из-за ID