满足两个条件时使用PROC SQL to select null
Use PROC SQL to select null when two conditions are met
我是 运行 一个代码,我通过从 table 中获取所有列然后添加第二个 table 中的两列来创建 table。如果来自第二个 table 的两个值等于 0,我需要将它们设置为空。我可以有其他组合,例如 FIELD1 = 0
和 FIELD1 = 1
但不能都等于 0.
我正在使用 PROC SQL
这样的:
PROC SQL;
CREATE TABLE TABLEA AS
SELECT A.*,
CASE
WHEN (B.FIELD1 NE 0 AND B.FIELD2 NE 0)
THEN B.FIELD1
ELSE .
END
AS FIELD1,
CASE
WHEN (B.FIELD2 NE 0 AND B.FIELD1 NE 0)
THEN B.FIELD2
ELSE .
END
AS FIELD2
FROM TABLE1 AS A
LEFT JOIN TABLE2 AS B ON A.ID = B.ID;
QUIT;
我显示的代码不起作用,我仍然看到很多记录 FIELD1 = 0
和 FIELD2 = 0
在结果 table TABLEA
.
我在这里错过了什么?
原来我需要确保变量不存在,否则它只会保留现有的变量并导致这种混乱。
我是 运行 一个代码,我通过从 table 中获取所有列然后添加第二个 table 中的两列来创建 table。如果来自第二个 table 的两个值等于 0,我需要将它们设置为空。我可以有其他组合,例如 FIELD1 = 0
和 FIELD1 = 1
但不能都等于 0.
我正在使用 PROC SQL
这样的:
PROC SQL;
CREATE TABLE TABLEA AS
SELECT A.*,
CASE
WHEN (B.FIELD1 NE 0 AND B.FIELD2 NE 0)
THEN B.FIELD1
ELSE .
END
AS FIELD1,
CASE
WHEN (B.FIELD2 NE 0 AND B.FIELD1 NE 0)
THEN B.FIELD2
ELSE .
END
AS FIELD2
FROM TABLE1 AS A
LEFT JOIN TABLE2 AS B ON A.ID = B.ID;
QUIT;
我显示的代码不起作用,我仍然看到很多记录 FIELD1 = 0
和 FIELD2 = 0
在结果 table TABLEA
.
我在这里错过了什么?
原来我需要确保变量不存在,否则它只会保留现有的变量并导致这种混乱。