我有一个表格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表达式,根据以下规则填充表B中的另一列ADDR_TYPE_CD
- WHERE STREET_ADD = STREET_ADD和CITY = CITY
- IF ADDR_TYPE_cd = PROP和MAIL,
- 那么表B中的ADDR_TYPE_CD = PROP,MAIL,RPT
- IF ADDR_TYPE_cd = PROP
- 那么表B中的ADDR_TYPE_CD = PROP,RPT
- IF ADDR_TYPE_cd = MAIL
- 那么表B中的ADDR_TYPE_CD = 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
答案 0 :(得分:0)
几乎没有问题,
您正在尝试根据源表中的单行向目标表插入多行,如果Addr_type_cd ='PROP'将两行添加一个'Prop'而另一行添加'RPT'
您尝试同时从两行捕获数据并按此插入,如果prop,mail insert prop,mail,rpt
您应该做的是修复源列(Addr_type_cd)
以在需要的地方分组值。之后很简单。
如果source如下所示,我已粘贴相应的代码:
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