0

我的源表(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。

上面的 case 语句必须用 if 语句进行修改。

Step1: 如果 CountryCode = 5020 and subcode= 100 那么 Subcode 必须是 101 Else case statement

Step2:上述Case语句必须在IF之后

注意:在 Source 表中,不应更改该值。

4

1 回答 1

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
于 2013-02-18T14:13:29.623 回答