sql - 使用 proc sql 时 WHERE 子句的语法错误
问题描述
我是 SAS 新手,我需要重新创建使用 R 运行的查询。SAS 中的语法规则可能不同,但我看不出我在哪里出错了
表“旧”列:A、B、C、D、E
表“新”列:A、B、C、D、E
PROC SQL;
create table delta as
SELECT *
FROM New
WHERE
(A, B, C)
IN(
SELECT (A, B, C)
FROM New
EXCEPT
SELECT A, B, C
FROM Old);
QUIT;
我的代码应该根据 A、B、C 变量找到增量行。
逗号错误消息
WHERE(A, B, C): 错误 79-322: 期望 (.
解决方案
我不在 sas 中,但可能是这个数据库不允许在 WHERE IN 子句中使用元组。
在这种情况下,您可以尝试将您的查询重构为内部连接
SELECT *
FROM New N
INNER JOIN (
SELECT A, B, C
FROM New
EXCEPT
SELECT A, B, C
FROM Old
) T ON T.A = N.A
AND T.B = N.B
AND T.C = N.C
推荐阅读
- data-structures - AVL 树和 WAVL 树关于一系列插入、删除和搜索的比较
- octobercms - 十月 CMS 和数千页
- url - Applescript 结果(文本链接)到 URL
- c++ - 在 NUMA 节点之间传播 OpenMP 线程
- google-app-engine - AppEngine + GWT-RPC + Search API 给出错误
- xaml - ListView 中的 ImageEx 冻结 UIThread
- c++ - 捕获异常的问题
- jquery - 无法在没有任何数据的情况下通过 JQuery 调用 ASPX 函数
- python - Python tkinter treeview 获取完整路径
- python - 使用 PyZMQ 流式传输标准输出