0

特定の条件を満たした場合に車のアイテムを表示する計算列を SAS エンタープライズ ガイドに作成したいと考えています。

  • フロントガラス、タイヤ、ハンドルなど75のカーアイテム(T.TS_Items)があります。

  • 各アイテムには一意の ID (T.TS_NUM) があるため、T.TS_NUM =1 ~ T.TS_NUM =75 です。

そして、新車のアイテムごとに、labelNo_01 から labelNo_75 のようなラベルを付けたいと考えています。

したがって、車両タイプがホンダ (T.TS_F_NUM = 2)、タイプがハッチバック (T.TS_TYPE = I)、および T.TS_NUM =1 の場合、新しい列名はフロントガラスなどのアイテムを含む LabelName_01 になります。

たとえば、車両タイプが変更された場合 - 車両タイプはトヨタ (T.TS_F_NUM = 1) ですが、残りは同じで、トヨタの 75 カー アイテムが表示されます。

私のコード:

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 ステートメントを追加する方法がわかりません。基本的に、上記のコードを使用して、where ステートメントで車両タイプを 1 (トヨタ) にハードコーディングすると、トヨタのみが表示されますが、ハッチバックだけでなく、すべてのタイプも表示されます。タイプハッチバックのみを与える条件を追加したいのですが、上記のコードのどこにどのように入るかわからない.

また、ループが役立つので、車両タイプごとにプロセスを繰り返す必要がありません。この情報がお役に立てば幸いです。

一部のデータ。

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 
4

1 に答える 1

1

ええ、あなたはかなり近いです、私はいくつかの同様のコードを持っていて、私のものはこのように見えて動作します:)
これには明らかにサブサブルールがありますが、すべての原則はELSEでも同じです.ELSE IFはないと思います. ..

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
于 2012-12-07T09:42:33.433 に答える