簡體   English   中英

如何在SQL Server中使用if語句和大小寫

[英]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 5020Subcode 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM