Mysql 在SAS中使用PROC SQL where in语句合并表
各位。 我目前正在使用SAS。 这是我的情况 我有一张名为“a”的桌子,看起来像:Mysql 在SAS中使用PROC SQL where in语句合并表,mysql,sql,sas,proc-sql,Mysql,Sql,Sas,Proc Sql,各位。 我目前正在使用SAS。 这是我的情况 我有一张名为“a”的桌子,看起来像: id_c id_t 5 3 2 9 15 1 65 43 ... ... 这个表只有两个不同于其他表的ID。这五、三、二、九,。。。是成对的 我想做的是,我想去掉每个id_t和id_c,这样我可以分别合并其他表中的其他变量。 为此,首先我决定去掉id\u t并合并其他变量。 以下代码有效: proc sql;
id_c id_t
5 3
2 9
15 1
65 43
... ...
这个表只有两个不同于其他表的ID。这五、三、二、九,。。。是成对的
我想做的是,我想去掉每个id_t和id_c,这样我可以分别合并其他表中的其他变量。
为此,首先我决定去掉id\u t并合并其他变量。
以下代码有效:
proc sql;
create table t1 as
select *
from other_var_table_1
where id_t in (select id_t from a);
quit;
结果是:
id_t var1 var2 var3
3
9
1
43
这里,id_t的顺序与表“a”中id_t的顺序完全相同
然而,当我使用id_c做同样的事情时,顺序就混乱了。
我想:
但当我运行相同的代码时,结果如下:
proc sql;
create table t2 as
select *
from other_var_table_2
where id_c in (select id_c from a);
quit;
id_c var_x var_y var_z
65
15
5
2
data final;
set t2;
set t1;
run;
id_c var_x var_y var_z id_t var1 var2 var3
5 3
2 9
15 1
65 43
... ...
这样做的目的是再次合并两个表,包括所有变量,例如:
proc sql;
create table t2 as
select *
from other_var_table_2
where id_c in (select id_c from a);
quit;
id_c var_x var_y var_z
65
15
5
2
data final;
set t2;
set t1;
run;
id_c var_x var_y var_z id_t var1 var2 var3
5 3
2 9
15 1
65 43
... ...
如果有人能帮助我,我将不胜感激
谢谢,
/****CREATING DATASETS****/
data a;
input int_c int_t;
cards;
5 3
2 9
15 1
65 43
;
run;
/*Create a **seq** number so that your order does not change*/
data a;
set a;
seq = _n_;
run;
data other_var_table_1;
input int_t var1 var2 var3;
cards;
3 12 43 76
1 10 20 30
;
run;
data other_var_table_2;
input int_c var_x var_y var_z;
cards;
2 100 200 300
5 1 2 3
65 10 20 30
;
run;
/****JOINING THE REQUIRED COLUMNS****/
proc sql;
create table final as
select r.*,p.var1,p.var2,p.var3,q.var_x,q.var_y,q.var_z
from
a r
left join
other_var_table_1 p
on r.int_t = p.int_t
left join
other_var_table_2 q
on r.int_c = q.int_c
order by r.seq;
run;
如果需要,可以在结果后删除列seq。如果你有任何疑问,请告诉我
我的输出:
int_c |int_t |SEQ |var1 |var2 |var3 |var_x |var_y |var_z
5 |3 |1 |12 |43 |76 |1 |2 |3
2 |9 |2 |. |. |. |100 |200 |300
15 |1 |3 |10 |20 |30 |. |. |.
65 |43 |4 |. |. |. |10 |20 |30
SQL表表示无序的数据集。您需要指定一列来确定顺序。在您的情况下,没有指定此类列。非常感谢您的帮助!你真的帮我解决了我的问题!再次感谢你。将来我可以问你一个问题吗?当然可以,你可以。谢谢你的赏识。