2013-02-18 3 views
0

У меня есть несколько столбцов в моей исходной таблице (CountryCodes, субкоды) и значение для этих столбцовКак использовать, если заявление вместе с делом в SQL сервере

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.

выше заявление дело должно справьтесь с утверждением.

Шаг1: Если CountryCode = 5020 и субкодовые = 100, то Subcode должен быть 101 Else сазе

Шаг2: Вышеупомянутое заявление Case должны следовать после IF

Примечания: в исходной таблице значения не следует перебирать.

+0

Вы не можете использовать оператор IF внутри SELECT. Возможно, ваша проблема может быть решена с помощью триггера. Сделайте триггер, который проверяет ваши требования и применяет необходимые изменения. – KuramaYoko

+1

в этой строке 'WHEN C.CountryCodes = '5020' THEN '000'' почему бы не использовать' 100' вместо '000'? –

+0

Почему вы не можете изменить значение в таблице? Если вы не изменяете значение, то как будет работать ваш оператор case – DevelopmentIsMyPassion

ответ

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

Смежные вопросы