使用一个查询的结果作为另一个查询的参数
Using the result of a query as a parameter for another query
我正在尝试将查询结果用作另一个查询的参数。
如下:
PROC SQL;
SELECT mydate INTO : varmydate FROM work.MyTable WHERE codigo = 1234;
QUIT;
PROC SQL;
SELECT * FROM work.MyOtherTable
WHERE codata = &varmydate;
QUIT;
但是,不幸的是,这没有用。
在此示例中,varmydate 变量将在第一个查询中接收数据类型的值。
96 PROC SQL;
97 SELECT codata FORMAT date9., valor FROM work.MyOtherTable WHERE codata = &varmydate;
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
NOTE: Line generated by the macro variable "VARMYDATE".
97 01MAR2020
_______
22
76
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, -, /, <, <=, <>, =, >, >=, AND, EQ, EQT, GE, GET,
GROUP, GT, GTT, HAVING, LE, LET, LT, LTT, NE, NET, OR, ORDER, ^=, |, ||, ~=.
ERROR 76-322: Syntax error, statement will be ignored.
98 QUIT;
执行第一个查询后,下面的命令:
%PUT &varmydate;
将得到以下结果:
2020 年 3 月 1 日
但是第二次查询returns出错。
如果我使用下面的语法:
PROC SQL;
SELECT * FROM work.MyOtherTable
WHERE codata = '01MAR2020'd;
QUIT;
那就可以了。
您没有指出 LOG window 消息中关于 无效的内容
我假设 table mytable
中的 mydate
列是存储日期 9 的类型字符。日期的表示。 如果它是日期格式的数值变量,宏变量 myvardate 的值将类似于 21975
因此,您需要在 SAS 日期文字上下文中解析 date9 表示形式
WHERE codata = "&myvardate"d;
需要双引号,因为宏解析不会出现在单引号文字中。
我正在尝试将查询结果用作另一个查询的参数。
如下:
PROC SQL;
SELECT mydate INTO : varmydate FROM work.MyTable WHERE codigo = 1234;
QUIT;
PROC SQL;
SELECT * FROM work.MyOtherTable
WHERE codata = &varmydate;
QUIT;
但是,不幸的是,这没有用。
在此示例中,varmydate 变量将在第一个查询中接收数据类型的值。
96 PROC SQL;
97 SELECT codata FORMAT date9., valor FROM work.MyOtherTable WHERE codata = &varmydate;
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
NOTE: Line generated by the macro variable "VARMYDATE".
97 01MAR2020
_______
22
76
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, -, /, <, <=, <>, =, >, >=, AND, EQ, EQT, GE, GET,
GROUP, GT, GTT, HAVING, LE, LET, LT, LTT, NE, NET, OR, ORDER, ^=, |, ||, ~=.
ERROR 76-322: Syntax error, statement will be ignored.
98 QUIT;
执行第一个查询后,下面的命令:
%PUT &varmydate;
将得到以下结果:
2020 年 3 月 1 日
但是第二次查询returns出错。
如果我使用下面的语法:
PROC SQL;
SELECT * FROM work.MyOtherTable
WHERE codata = '01MAR2020'd;
QUIT;
那就可以了。
您没有指出 LOG window 消息中关于 无效的内容
我假设 table mytable
中的 mydate
列是存储日期 9 的类型字符。日期的表示。 如果它是日期格式的数值变量,宏变量 myvardate 的值将类似于 21975
因此,您需要在 SAS 日期文字上下文中解析 date9 表示形式
WHERE codata = "&myvardate"d;
需要双引号,因为宏解析不会出现在单引号文字中。