SQL - объединение двух столбцов с предпочтением одного из них при записи исходного источника - PullRequest
0 голосов
/ 25 января 2019

У меня есть таблица с двумя альтернативными источниками данных о платежах.например,

ID    Source1_2004   Source1_2005   Source2_2004    Source2_2005 
 1           15004          14045           NULL           14545
 2            NULL           9004          46789            4555
 3            3334           NULL           4555            NULL

Мне нужно объединить их, сохранив цифры Source1, если они доступны, но заменив Source2, если Source1 равен NULL.Я также хочу создать новые столбцы, в которых будет указан источник окончательной суммы платежа.Например, новая таблица, основанная на вышеприведенном, будет выглядеть следующим образом:

ID    Payment_2004    Payment_2005    Source_2004    Source_2005
 1           15004           14045        Source1        Source1
 2           46789            9004        Source2        Source1
 3            3334            NULL        Source1           NULL

Я пытался использовать CASE WHEN, с IS NULL, чтобы создать новые столбцы Payment и посмотреть, есть ли новый столбец Payment.соответствует Source1 или Source2 для создания новых столбцов Source.Однако у меня возникли проблемы из-за того, что NULLS в данных нарушают логику, и не совсем дают тот же результат.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 25 января 2019

Вам нужно что-то вроде этого:

SELECT ID
    , Payment_2004 = ISNULL(Source1_2004,Source2_2004)
    , Payment_2005 = ISNULL(Source1_2005,Source2_2005)
    , Source_2004 = CASE WHEN Source1_2004 Is NOT Null THEN 'Source1' 
        WHEN Source2_2004 Is NOT Null THEN 'Source2' ELSE 'No Source' END
    , Source_2005 = CASE WHEN Source1_2005 Is NOT Null THEN 'Source1' 
        WHEN Source2_2005 Is NOT Null THEN 'Source2' ELSE 'No Source' END
FROM YourTable;
...