如何使用if语句的情况下在SQL Server一起

问题描述:

我在我的源表数列(CountryCodes,子码)和值的列如何使用if语句的情况下在SQL Server一起

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驻留在子码100

现在,我的要求是,如果CountryCode 5020Subcode 100然后我需要子码的值更改为100〜101

上述case语句有用if语句表示赞赏。

第一步:如果COUNTRYCODE = 5020和子码= 100则子码必须是101否则case语句

第二步:上述情况语句后要遵循IF

注:在源表中的值不应该chnaged。

+0

不能使用IF语句SELECT内。 也许你的问题可以通过触发器来解决。制作一个触发器,检查您的要求并应用必要的更改。 – KuramaYoko 2013-02-18 14:11:38

+1

这条线'当C.CountryCodes ='5020'那'000''为什么不用'100'而不是'000'? – 2013-02-18 14:12:55

+0

为什么你不能改变表中的值?如果你没有改变价值,那么你的病例陈述将如何工作 – DevelopmentIsMyPassion 2013-02-18 14:13:11

你为什么不这样做只是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 
+0

该值将被分配为101,但不会随条件循环 – 0537 2013-02-18 14:50:21