当您从现有列中添加新列时-您是否必须使用添加列还是可以将其放入?我的orig表没有上一天或下一天-这些是我要添加的列。应该可以吗?
SELECT
ACCT_NUM,
PRODUCT,
Date_local,
CURRENTDAY,
LAG[CURRENTDAY,1,0] OVER(PARTITION BY ACCT_NUM ORDER BY Date_local DESC) AS PREVIOUSDAY,
LEAD[CURRENTDAY,1,0] OVER(PARTITION BY ACCT_NUM ORDER BY Date_local DESC) AS NEXTDAY,
FROM FINANCE.REVENUE03
或者我可以更改表格?
ALTER TABLE REVENUE03
ADD COLUMN PREVIOUSDAY=
LAG[CURRENTDAY,1,0] OVER(PARTITION BY ACCT_NUM ORDER BY Date_local DESC);
ADD COLUMN NEXTDAY=
LEAD[CURRENTDAY,1,0] OVER(PARTITION BY ACCT_NUM ORDER BY Date_local DESC)
END
答案 0 :(得分:1)
简而言之,您不能在其中使用窗口功能,而是创建 VIEW
或尝试创建 FUNCTION
并使用它与计算列。
为什么?
原因窗口函数只能出现在SELECT或ORDER BY子句中。
因此,我建议创建一个VIEW
之类的
CREATE VIEW YourViewName
AS
SELECT ACCT_NUM,
PRODUCT,
Date_local,
CURRENTDAY,
LAG[CURRENTDAY,1,0] OVER(PARTITION BY ACCT_NUM ORDER BY Date_local DESC) AS PREVIOUSDAY,
LEAD[CURRENTDAY,1,0] OVER(PARTITION BY ACCT_NUM ORDER BY Date_local DESC) AS NEXTDAY,
FROM FINANCE.REVENUE03
GO