Изявление на случай в sql

Искам да създам изчислена колона в корпоративното ръководство на SAS, където ще показва артикули за автомобили, ако отговаря на определени условия.

  • Има 75 автомобилни артикула (T.TS_Items) като предно стъкло, гуми, волан и др.

  • Всеки елемент има уникален идентификатор (T.TS_NUM), така че T.TS_NUM =1 до T.TS_NUM =75.

След това искам да дам на всеки нов автомобилен артикул етикет като labelNo_01 до labelNo_75.

Така че, ако типът превозно средство е Honda (T.TS_F_NUM = 2), типът е хечбек (T.TS_TYPE = I) и T.TS_NUM =1, тогава името на новата колона е LabelName_01 с елемент като предно стъкло.

и ако типът на превозното средство се промени например - типът на превозното средство е Toyota (T.TS_F_NUM = 1), но останалото е същото, ще ми даде артикула 75 автомобил за Toyota.

Моят код:

PROC SQL;
CREATE TABLE WORK.MotorVehicle AS 
SELECT 
T.TS_VEHICLE_RDES, 
/* FI_Label_01 */
Case When 
T.TS_F_NUM in (1,2) And  
T.TS_TYPE = I And 
T.TS_NUM =1 Then T.T_Item
else T.T_Item
End
AS FI_Label_01
FROM T.T_ITEM 
WHERE  T.TS_F_NUM = 41 
ORDER BY T.TS_NUM ;
QUIT;

Горното е просто и работи, но не съм сигурен как да добавя команда Else или Else if. По принцип, когато използвам горния код и твърд код, типът на превозното средство е 1 (toyota) в израза where, той работи и ми дава само Toyota, но също така ми дава всички типове вместо само хечбек. Искам да добавя условие, при което дава само тип хечбек, но не знам как или къде в горния код ще влезе.

Също така цикъл би помогнал, за да не се налага да повтарям процеса за всеки тип превозно средство. Надявам се тази информация да помогне.

Някои данни.

T.TS_F_NUM      T.TS_TYPE       T.T_Item           T.TS_NUM
1               I               windscreen        1
2               I               side mirror       2
1               C               Side mirror       3
2               C               passenger door    4
1               I               dashboard         5
2               I               gear box          6 

person Beanie    schedule 07.12.2012    source източник
comment
можете ли да предоставите примерни данни за същото? Предполагам, че можем да декодираме, но трябва да проверим с примерни данни   -  person Ajith Sasidharan    schedule 07.12.2012
comment
+1 Ajith Иска ми се да може просто да добави към въпроса си схема на таблица и примерни данни.   -  person bonCodigo    schedule 07.12.2012
comment
@AjithSasidharan Добавих някои данни в края. Надявам се това да помогне   -  person Beanie    schedule 07.12.2012


Отговори (1)


Да, доста сте близо, имам подобен код и моят изглежда така и работи :)
Това очевидно има подподправила, но всички принципи са еднакви за ELSE, не мисля, че има ИНАЧЕ АКО...

CASE WHEN
    RULE_1 = TRUE THEN 
        CASE WHEN RULE_2 = TRUE AND RULE_3 = TRUE THEN
            CASE WHEN 
                RULE_4 = TRUE
            THEN 
                ITEM_1
            ELSE 
                ITEM_2
            END
        ELSE
            CASE WHEN RULE_5 THEN
                ITEM_3
            ELSE
                CASE WHEN RULE_6 = TRUE THEN 
                    ITEM_4
                ELSE
                    ITEM_5
                END
            END 
        END
END
person dan richardson    schedule 07.12.2012
comment
Опитах се да добавя условията по различен начин, но не го разбирам съвсем правилно. почти там, но не и цитат там. - person Beanie; 07.12.2012
comment
@Beanie, защо не актуализираш въпроса с това, което си опитал досега, може би това ще ни помогне да ти помогнем допълнително :) - person bonCodigo; 07.12.2012
comment
@bonCodigo, добавих кода, който работи, но също така ми дава всички типове. Надявам се това да помогне - person Beanie; 08.12.2012