Справка по SQL-запросам по условиям
У меня есть таблица A с колонками, как показано ниже:
Addr_id Street_Add Addr_type_cd Acct_nbr CITY
1 12 ST PROP A MN
1 12 ST MAIL A1 MN
1 12 ST PROP B MN
1 12 ST PROP A MN
1 12 ST PROP A MN
2 13 ST PROP A2 MI
2 13 ST MAIL A3 MI
3 14 ST PROP AB MO
4 15 ST MAIL AD IL
Вывод как показано ниже;
OUTPUT - ADDR_ID OUTPUT - ADDR_TYPE_ CD
1 PROP
1 MAIL
1 RPT
2 PROP
2 MAIL
2 RPT
3 PROP
3 RPT
4 MAIL
4 RPT
Естественный ключ - Street_addr и CITY. Я пытаюсь написать выражение Case, заполнив другой столбец ADDR_TYPE_CD в таблице B на основе приведенных ниже правил
- ГДЕ STREET_ADD=STREET_ADD и CITY = CITY
- IF ADDR_TYPE_cd = PROP и MAIL,
- THEN ADDR_TYPE_CD в TABLE B = PROP, MAIL, RPT
- IF ADDR_TYPE_cd = PROP
- THEN ADDR_TYPE_CD в TABLE B = PROP, RPT
- IF ADDR_TYPE_cd = MAIL
- THEN ADDR_TYPE_CD в TABLE B = MAIL, RPT
Я попытался написать через заявление CASE как:
SELECT
CASE addr_type_cd
WHEN addr_type_cd='PROP' AND addr_type_cd='MAIL'
THEN addr_type_cd='RPT' AND addr_type_cd='PROP' AND addr_type_cd='MAIL'
END
FROM Table A
WHERE street_addr = street_addr
AND city = city
Я получаю сообщение об ошибке ключевого слова, к тому же я не уверен, сработает ли логика. Любые входные идеи будут очень полезны. Надеюсь, вопрос ясен.
Спасибо,
Pallavi
1 ответ
Есть несколько проблем,
Вы пытаетесь вставить несколько строк в таблицу Target, основываясь на одной строке в исходной таблице, если Addr_type_cd = 'PROP' вставьте две строки: одну с "Prop" и другую с "RPT"
Таким же образом вы пытаетесь захватить данные из двух строк одновременно и вставить в соответствии с этим, если prop, mail вставьте prop, mail, rpt
Что вы должны сделать, это исправить исходный столбец (Addr_type_cd)
чтобы сгруппировать значения, где это необходимо. После этого все просто. Если источник был как ниже, я вставил соответствующий код:
Insert into Table_B
(
[Addr_id],
[Street_Add],
[Addr_type_cd],
[Acct_nbr] ,
[CITY]
)
Select
[Addr_id],
[Street_Add],
CASE
WHEN addr_type_cd = 'PROP' THEN 'PROP;RPT'
WHEN addr_type_cd='MAIL' THEN 'MAIL;RPT'
WHEN addr_type_cd='PROP;MAIL' THEN 'PROP;MAIL;RPT'
END ,
[Acct_nbr] ,
[CITY]
From Table_A