合并两个表中的SQL语句,并从两个表中的字段创建求和,按新字段分组
a有两个表:CDR和CR。我需要从CR中获得标称和,从CDR中获得操作系统和 b在表CDR中,我需要创建category字段,然后用于groupby:PDT、TAG、ARR、BUCKET c 表CDR:合并两个表中的SQL语句,并从两个表中的字段创建求和,按新字段分组,sql,oracle10g,Sql,Oracle10g,a有两个表:CDR和CR。我需要从CR中获得标称和,从CDR中获得操作系统和 b在表CDR中,我需要创建category字段,然后用于groupby:PDT、TAG、ARR、BUCKET c 表CDR: ID NOMINAL 1 800 2 700 3 900 3 1000 4 760 5 666 表CR: ID POOL_CD EXPOSURE_ATT OS METHOD BS
ID NOMINAL
1 800
2 700
3 900
3 1000
4 760
5 666
表CR:
ID POOL_CD EXPOSURE_ATT OS METHOD BS ASSET
1 XT11 04 800 ADV KKK ZZZ
2 XO21 05 700 K ABC NNN
3 XT11 04 300 ADV GGG ZZZ
4 X022 04 200 ADV HHH ZZZ
5 XT14 05 100 ADV GGG ZZZ
最终表格:
PDT EXPOSURE_ATT TAG ARR BUCKET OS NOMINAL
T 04 ALM 1 LE60 1100 2700 (ID 1 AND 3)
T 05 CONV 1 MT90 100 666 (ID 5)
O 04 ALM 2 LE60 200 760 (ID 4)
嗨,
最后,我尝试了上面的方法
SELECT x.PDT,x.exposure_att,x.TAG,x.ARR,x.BUCKET,SUM(x.OS) OS,SUM(x.NOMINAL) NOMINAL
FROM
(
SELECT *
FROM
(SELECT a.ID,a.exposure_att,a.OS,a.METHOD,a.BS,a.ASSET,
CASE
WHEN SUBSTR(a.POOL_CD,7,1)='O' THEN 'OVERDRAFT'
WHEN SUBSTR(a.POOL_CD,7,1)='T' THEN 'TERM_LOAN'
WHEN (a.exposure_att) in ('04','H3','H4') THEN 'PRIORITY_SEC'
ELSE 'MASS_HL' END PDT,
CASE
WHEN SUBSTR(a.POOL_CD,8,1)='0' THEN '0'
WHEN SUBSTR(a.POOL_CD,8,1)='1' THEN '1'
WHEN SUBSTR(a.POOL_CD,8,1)='2' THEN '2'
WHEN a.POOL_CODE='POOL_MY_HL' THEN 'POOL' END ARR,
CASE
WHEN SUBSTR(a.POOL_CD,20,1) in ('1','2') THEN 'LE60'
WHEN SUBSTR(a.POOL_CD,20,1)='3' THEN 'LE70'
ELSE 'MT90' END BUCKET,
CASE
WHEN (a.exposure_att) in ('01','02','04','09','AB') THEN 'ALM'
ELSE 'CONV' END TAG
FROM CDR a) a
LEFT JOIN
(SELECT b.ID,b.NOMINAL
FROM CR b) b
ON a.ID=b.ID
WHERE a.METHOD = 'ADV'
AND a.BS_TYPE not in ('ABC','DEF')
AND a.ASSET = 'ZZZ'
) x
GROUP BY x.PDT,x.exposure_att,x.TAG, x.ARR, x.BUCKET
ORDER BY x.PDT,x.exposure_att,x.TAG, x.ARR, x.BUCKET
你的问题是什么?嗨,安多玛和阿德里安,我想从CDR和CR两个表中做最后一个表。执行附加的代码会产生错误
SELECT x.PDT,x.exposure_att,x.TAG,x.ARR,x.BUCKET,SUM(x.OS) OS,SUM(x.NOMINAL) NOMINAL
FROM
(
SELECT *
FROM
(SELECT a.ID,a.exposure_att,a.OS,a.METHOD,a.BS,a.ASSET,
CASE
WHEN SUBSTR(a.POOL_CD,7,1)='O' THEN 'OVERDRAFT'
WHEN SUBSTR(a.POOL_CD,7,1)='T' THEN 'TERM_LOAN'
WHEN (a.exposure_att) in ('04','H3','H4') THEN 'PRIORITY_SEC'
ELSE 'MASS_HL' END PDT,
CASE
WHEN SUBSTR(a.POOL_CD,8,1)='0' THEN '0'
WHEN SUBSTR(a.POOL_CD,8,1)='1' THEN '1'
WHEN SUBSTR(a.POOL_CD,8,1)='2' THEN '2'
WHEN a.POOL_CODE='POOL_MY_HL' THEN 'POOL' END ARR,
CASE
WHEN SUBSTR(a.POOL_CD,20,1) in ('1','2') THEN 'LE60'
WHEN SUBSTR(a.POOL_CD,20,1)='3' THEN 'LE70'
ELSE 'MT90' END BUCKET,
CASE
WHEN (a.exposure_att) in ('01','02','04','09','AB') THEN 'ALM'
ELSE 'CONV' END TAG
FROM CDR a) a
LEFT JOIN
(SELECT b.ID,b.NOMINAL
FROM CR b) b
ON a.ID=b.ID
WHERE a.METHOD = 'ADV'
AND a.BS_TYPE not in ('ABC','DEF')
AND a.ASSET = 'ZZZ'
) x
GROUP BY x.PDT,x.exposure_att,x.TAG, x.ARR, x.BUCKET
ORDER BY x.PDT,x.exposure_att,x.TAG, x.ARR, x.BUCKET