1
以下是示例數據。Proc Sql - 來自3個表的相同列名並操作
表1:
iD Flag Reason
1 1 ABCD
2 0
3 0
4 1 ERS
5 0
表2:
iD Flag Reason
1 1 ERS
2 1 FGH
3 1 DDD
4 1
5 0
表3:
iD Flag Reason
1 1
2 1 DDD
3 1
4 1
5 1 ERS
我想寫一個PROC SQL,這將有助於我的不同原因的情況下分開。
proc sql;
select case when (table1.flag = 1 and reason = 'ABCD') then 1
when (table2.flag = 1 and reason = 'ABCD') then 1
when (table3.flag = 1 and reason = 'ABCD') then 1
when (table1.flag = 1 and reason = 'FGH') then 2
when (table2.flag = 1 and reason = 'FGH') then 2
:
:
when (table3.flag = 1 and reason = 'ERS') then 4
Else 0
End as output
from table1
inner join table2 on table1.id = table2.id
inner join table3 on table1.id = table3.id
;
這裏是我試圖讓輸出,
Id Reason Output
1 ABCD 1
2 FGH 2
3 DDD 3
4 ERS 4
5 ERS 4
即使如此,其原因可能在不同的表更改爲相同的ID,我需要在任何表格的第一個出現的原因基於Flag變量並分配輸出。
還有其他辦法可以做同樣的事嗎?
在此先感謝。
可能有更好的方法。你能更清楚地解釋邏輯嗎?例如,您所需的輸出有三列,但示例代碼只產生一列。 –