![](/img/trans.png)
[英]How to use CASE statement along with a Sub Query in SQL Server 2008
[英]How to use if statement along with case in sql server
我的源表中有幾列(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位於子代碼100中。
現在我的要求是,如果CountryCode 5020
在Subcode 100
那么我需要將subCode的值從100更改為101。
上面的case語句必須用if語句修飾。
步驟1:如果CountryCode = 5020且子代碼= 100,則子代碼必須為101 Else case語句
步驟2:如果在IF之后必須遵循上述Case陳述
注意:在源表中,不應更改該值。
為什么不只做一個案例而不是嵌套案例:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.