我看到了一些与我的问题相关的问题,但从来没有完全相同的结构,而且由于我对 SAS/SQL 很陌生,所以我找不到解决问题的正确方法。
我正在尝试几天来加入多个表(大约三十个)
基本上,我的问题归结为:
假设我有 3 张 table :
TAB,有 2 个变量 V1 和 V2 t1,有 2 个变量 V2 和 V3 t2,具有相同的 2 个变量 V2 和 V3
我想根据V2的值与t1或t2连接TAB以获得Full_TABLE
TAB
V1 V2
A 1
B 1
C 2
D 2
t1
V2 V3
1 x
1 y
1 z
t2
V2 V3
2 h
2 i
2 j
预期结果:
Full_TABLE
V1 V2 V3
A 1 x
A 1 y
A 1 z
B 1 x
B 1 y
B 1 z
C 2 h
C 2 i
C 2 j
D 2 h
D 2 i
D 2 j
从逻辑上讲,它是基于V2的值的条件连接:
如果 V2=1 则将 TAB 与 t1 合并
如果 V2=2 则将 TAB 与 t2 合并
不知道是否可以自动完成,
粗略地讲,V1 有 30.000 个不同的值,V2 有 27 个(因此 27 个表 t1-t27),V3 每个 V2 值有 10 个值,因此我预计 Full_TABLE 为 30.000*10=300.000 行
所以我可以管理基于 V2 和/或 V3 的半自动化解决方案,但不能管理 V1
任何 SAS 或 SQL(或 proc sql...)方面的线索都将受到高度赞赏!
小
最佳答案
您可以使用 proc sql
和一些 SQL 技巧来做到这一点:
proc sql;
select tab.v1, tab.v2, coalesce(t1.v3, t2.v3) as v3
from tab left join
t1
on tab.v2 = 1 left join
t2
on tab.v2 = 2;
关于sql - 根据一个变量的值有条件地组合多个数据集/表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33834510/