#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