【发布时间】:2017-01-27 13:26:07
【问题描述】:
感谢您对这段代码的帮助,我收到“缺少关键字”错误。我以前从未使用过 Lag 功能,所以希望我能正确使用它。谢谢你的帮助。加夫
CREATE VIEW GS_Date AS
SELECT
DATE_DATE,
DATE_FLAG,
CASE WHEN LAG ( DATE_FLAG) OVER ( ORDER BY DATE_DATE ) = '1' THEN DATE_STEP = ( LAG ( DATE_FLAG) OVER ( ORDER BY DATE_DATE ) ) + '1'
WHEN LAG ( DATE_FLAG) OVER ( ORDER BY DATE_DATE ) = '0' AND LAG ( DATE_FLAG) OVER ( ORDER BY DATE_DATE ) = '-1' THEN DATE_STEP = ( LAG ( DATE_FLAG) OVER ( ORDER BY DATE_DATE ) ) + '1'
ELSE DATE_STEP = LAG ( DATE_FLAG) OVER ( ORDER BY DATE_DATE ) END AS DATE_STEP
FROM DATE_GROUP
【问题讨论】:
-
您不能在 SQL 语句中使用
DATE_STEP = ...分配变量或列。与错误无关:lag()返回一个数字,不要将其与字符串进行比较。'1'是一个字符串常量。1是一个数字。 -
要查找错误,暂时跳过案例,一次尝试一个LAG。
-
感谢您的帮助,现在正在工作。
-
@jarlh - 除了在这个例子中,错误与 CASE 的使用方式有关; LAG 完全没问题!
-
@Gavin - 如果它正在“工作”,这意味着你发现你错误地使用了 CASE。应该是
CASE when... then... (just the value), etc as DATE_STEP
标签: sql oracle lag window-functions