如何使用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 5020
是Subcode 100
然后我需要子码的值更改为100〜101
上述case语句有用if语句表示赞赏。
第一步:如果COUNTRYCODE = 5020和子码= 100则子码必须是101否则case语句
第二步:上述情况语句后要遵循IF
注:在源表中的值不应该chnaged。
答
你为什么不这样做只是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
不能使用IF语句SELECT内。 也许你的问题可以通过触发器来解决。制作一个触发器,检查您的要求并应用必要的更改。 – KuramaYoko 2013-02-18 14:11:38
这条线'当C.CountryCodes ='5020'那'000''为什么不用'100'而不是'000'? – 2013-02-18 14:12:55
为什么你不能改变表中的值?如果你没有改变价值,那么你的病例陈述将如何工作 – DevelopmentIsMyPassion 2013-02-18 14:13:11