我的源表中有几列(CountryCodes,SubCodes),这些列的值是
Subcodes CountryCodes
100 1111
100 1566
100 2485
100 4586
101 4789
101 4756
101 7895 so on
我使用下面的查询,根据需要给我结果
select
CASE WHEN C.SubCodes= '100' Then
CASE
WHEN C.CountryCodes IN ('5001','5048') THEN '001'
WHEN C.CountryCodes = '5005' THEN '003'
WHEN C.CountryCodes= '5018' AND SA.Amt IN(30,900) THEN '094'
WHEN C.CountryCodes = '5018' AND SA.Amt IN(40,1200) THEN '095'
WHEN C.CountryCodes = '5018' AND SA.Amt IN(50,1500) THEN '096'
WHEN C.C.CountryCodes = '5029' THEN '781'
WHEN C.C.CountryCodes = '5026' THEN '454'
WHEN C.C.CountryCodes = '5064' THEN '001'
WHEN C.C.CountryCodes = '5017' THEN '064'
ELSE CAST('' AS CHAR(3))
END
ELSE CAST('' AS CHAR(3))
END
END AS SomeCountryCoDes
现在,企业已经提出了新的要求。那是
CountryCode 5020位于SubCode 100.
现在我的要求是如果CountryCode 5020
在Subcode 100
中,那么我需要将subCode的值从100更改为101.
上述案例陈述必须用if语句修改。
步骤1:如果CountryCode = 5020且子码= 100,那么Subcode必须是101 Else case statement
步骤2:在IF
之后必须遵循上述Case语句注意:在Source表中,不应该对值进行处理。
答案 0 :(得分:1)
为什么不只做一个案例而不是嵌套案例:
CASE WHEN C.SubCode = '100' AND C.CountryCode in ('5001', '5048') THEN '001'
WHEN C.SubCode = '100' AND C.CountCode =- '5005' THEN '003'
...
WHEN C.SubCode = '100' AND CountryCode = '5020' THEN '101'
...
END