sql中的Case语句
我想在《SAS企业指南》中创建一个计算列,如果满足某些条件,它将显示汽车项目sql中的Case语句,sql,loops,if-statement,case,Sql,Loops,If Statement,Case,我想在《SAS企业指南》中创建一个计算列,如果满足某些条件,它将显示汽车项目 共有75个汽车项目(T.T_项目),如挡风玻璃、轮胎、方向盘等 每个项目都有一个唯一的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,带有挡风玻璃等项目 例如,
- 共有75个汽车项目(T.T_项目),如挡风玻璃、轮胎、方向盘等
- 每个项目都有一个唯一的ID(T.TS_NUM),因此T.TS_NUM=1到T.TS_NUM=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
是的,你非常接近,我有一些类似的代码,我的代码看起来像这样,并且可以工作:)
这显然有子规则,但所有的原则对其他都是一样的,我不认为有其他的如果
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
你能提供一些同样的样本数据吗?我想我们可以解码,但需要使用示例数据+1进行检查。AjithSasidharan希望他能用表架构和示例数据附加他的问题。@AjithSasidharan我在末尾添加了一些数据。希望这对我有所帮助。我尝试以不同的方式添加条件,但我没有完全正确。它几乎就在那里,但没有引用。@Beanie你为什么不用你到目前为止尝试过的内容更新这个问题,也许这会帮助我们进一步帮助你:)@bonCodigo,我已经添加了有效的代码,但也提供了所有类型的代码。希望这有帮助