0

我想在 SAS 企业指南中创建一个计算列,如果它满足某些条件,它将显示汽车项目。

  • 有 75 个汽车项目 (T.TS_Items),例如挡风玻璃、轮胎、方向盘等。

  • 每个项目都有一个唯一的 ID (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) 但其余部分相同,它将为我提供 Toyota 的 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 回答