如何检查另一个数据集的变量/列中是否存在一个数据集中的单元格?

时间:2014-09-02 23:18:45

标签: sql sas

我有两个数据集,称为AB;这是他们的样子:

A:

  Var1              Var2
"Hello21"           "ID1"
"Hello5"            "ID2"
"Hello30"           "ID3"
   .                "ID4"

B:

   Var1
"Hello30"
"Hello39"
"Hello41"

当然,有数十万个观察而不是三个。我希望能够查看A.var1并查看A.var1B.var1中的每个观察结果是否都存在。如果没有,我想用空白替换A.var1。我还想保留缺少A.var1的行。

最终输出:

  Var1              Var2
   .                "ID1"
   .                "ID2"
"Hello30"           "ID3"
   .                "ID4"

你知道我可以用什么样的SQL查询来实现这个目标吗?我将在SAS的PROC SQL语句中写这个。

2 个答案:

答案 0 :(得分:2)

SELECT B.Var1, A.Var2
FROM A LEFT OUTER JOIN B ON A.Var1 = B.Var1

这应该得到你想要的结果。

答案 1 :(得分:0)

ah_au的答案是正确的,因为我省略了表格A可能包含我想在最终输出中保留的缺失观察结果的详细信息。

但考虑到这些细节,我们可以建立ah_au的答案:

CREATE TABLE Final as
SELECT DISTINCT B.Var1, A.Var2
FROM A LEFT OUTER JOIN B ON A.Var1 = B.Var1

UNION

SELECT DISTINCT B.Var1
FROM B;

DELETE FROM FINAL
WHERE VAR2 IS MISSING;