【发布时间】:2021-05-25 20:42:17
【问题描述】:
感谢 TOM,问题已解决 Proc SQL not returning any columns. Innerjoin。我感谢这里提供的帮助,但它并没有引导我找到正确的解决方案。我最初的编辑说我使用的是 mysql,但我在发布后简要编辑了它以确认它是 sql server。这导致这个thead走错了方向。有关此信息,请参阅上面链接的主题。
connect to odbc (dsn='X' uid='X' pwd='XY');
create table School.TRANS_INFO as SELECT * from connection to odbc
(SELECT Distinct
S.Schd_t AS Schd_Date format MMDDYY10.,
S.otb As Ship_Loc,
W.store_NUMBER AS store,
S.SHP_ID AS SHIP_ID,
W.store_CITY_STATE,
Q.Stat_CD AS Status,
(S.PROD_CD || S.plt_CD) AS SKU,
W.ACCOUNT_TYPE as Location
FROM
SHPMT_DTL S
INNER JOIN store W ON W.store_NUMBER = S.Otb_DEST_store_NBR
INNER JOIN SHP_LEG Q ON Q.SHPMT_ID = S.SHP_ID
WHERE
W.ACCOUNT_TYPE = 'I'
AND S.Schd_t <= Sysdate
AND Q.Stat_CD IN ('S','P')
ORDER BY Schd_Date);
disconnect from odbc;
QUIT;
但是,在我运行此程序后,我收到一条错误消息,提示“PROC SQL 要求任何创建的表至少有 1 列”。任何诊断此问题的帮助将不胜感激。
【问题讨论】:
-
当使用 Pass through 你的查询需要是 MYSQL 兼容的。我不熟悉 MYSQL,但这看起来不正确 - 特别是
format mmddyy10.,它看起来像 SAS 代码。这个||在 MYSQL 中也有效吗? -
伟大的呼吁,我会更新这个,因为它看起来我正在使用 SQL 服务器。我以前使用 FORTMAT MMDDYY10 没有问题,我正在研究是否可以使用 ||
-
在没有
format和Sysdate的情况下,查询是否在SQL Server 中单独工作?我看到一个句号限定符名称SD?这个数据源是什么? -
我从 SHPMT_DTL S 运行了一个简单的选择 (S.PROD_CD || S.plt_CD) AS SKU,它根据需要工作,所以我假设这不是问题。我还删除了查询的格式部分以及 sysdate 子句,它返回了相同的错误,所以我假设这些也不是罪魁祸首。我还删除了期间限定符,因为它只是引用存储表的数据库,不需要,因为它们都属于我连接到的同一个主数据库。
标签: sql-server sas odbc inner-join