Выберите два новых столбца на основе значений в одном столбце - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть две таблицы, одна с личными данными и одна с внешними кодами для этих людей. Эти внешние коды могут быть числовыми (N для числового кода) или буквенно-цифровыми (S для краткого кода). Они объединены с partner_id.

Для каждого отдельного человека я должен вернуть столбцы "partner_id", "birth_date", "numeric_ext_code" (если существует, иначе null) [если тип ext_codeis N] и "short_ext_code" (если существует, иначе null) [если тип ext_code - S].

Поскольку у меня только один столбец с каждым типом внешнего кода, мне нужно "разбить"это один на два - числовой_экст_код и короткий_экст_код. Как мне это сделать? При необходимости я могу предоставить дополнительную информацию.

Пример данных:

sample data

Пример, в котором вы можете видеть, что один человек может иметь числовойи буквенно-цифровой код одновременно.

sample data 2

Желаемые результаты:

PARTNER_ID  | BIRTH_DATE | NUMERIC_EXT_CODE          | SHORT_EXT_CODE  
10000008611 | 15.01.63   | 0000000000000000090655955 | test11

(извините за неправильное форматирование, яне знаю лучшего способа сделать это)

1 Ответ

1 голос
/ 06 ноября 2019

Вы можете использовать условное агрегирование:

SELECT PARTNER_ID, BIRTH_DATE,
       MAX(CASE WHEN ext_code = 'N' THEN ext_code ELSE NULL END) AS NUMERIC_EXT_CODE,
       MAX(CASE WHEN ext_code = 'S' THEN ext_code ELSE NULL END) AS SHORT_EXT_CODE
FROM Person P 
JOIN External E ON P.PARTNER_ID = E.PARTNER_ID
GROUP BY PARTNER_ID, BIRTH_DATE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...