Sql 声明Varchar-Teradata
我正试图将查询结果保存到声明的varchar,但我收到错误消息“子查询中不能为top n” 试试这个Sql 声明Varchar-Teradata,sql,teradata,Sql,Teradata,我正试图将查询结果保存到声明的varchar,但我收到错误消息“子查询中不能为top n” 试试这个 DECLARE d TIMESTAMP(6); SELECT t1.DATE_S INTO d FROM (SELECT DATE_S, ROW_NUMBER() OVER (ORDER BY ID DESC) rn FROM db1_SC.LOG_SP_STATUS WHERE SP_ID = 1 AND Status IS NULL AND Date_S IS
DECLARE d TIMESTAMP(6);
SELECT t1.DATE_S INTO d
FROM
(SELECT DATE_S, ROW_NUMBER() OVER (ORDER BY ID DESC) rn
FROM db1_SC.LOG_SP_STATUS
WHERE SP_ID = 1 AND Status IS NULL AND Date_S IS NOT NULL AND DATE_E IS NULL) t1
WHERE t1.rn = 1
我没有TD系统要测试,但你可以试试
声明d时间戳(6);
选择d中的前1个日期
从db1_SC.LOG_SP_状态
其中SP_ID=1
并且状态为空
并且日期不为空
日期为空
按ID描述订购;
Teradata显然不支持这种语法。可能您也可以使用从db1_SC.LOG_SP_STATUS中选择d中的前1个日期,其中SP_ID=1,STATUS为NULL,DATE_S为NOT NULL,DATE_E为NULL,ORDER BY ID DESC
,但我不想创建NOT nessery tmp表。您是否试图在存储过程中执行此操作?您只能在Teradata中的存储过程(我认为还有宏)中声明变量。你到底想做什么?我想不出任何合理的理由来避免使用易变表,但如果您真的不想要,请使用CTE。
DECLARE d TIMESTAMP(6);
SELECT t1.DATE_S INTO d
FROM
(SELECT DATE_S, ROW_NUMBER() OVER (ORDER BY ID DESC) rn
FROM db1_SC.LOG_SP_STATUS
WHERE SP_ID = 1 AND Status IS NULL AND Date_S IS NOT NULL AND DATE_E IS NULL) t1
WHERE t1.rn = 1