将滞后查询应用于新列



对绿色SQL问题表示歉意。我应用这个查询来确定PersonID何时发生更改,即如果查询返回的PersonID与当前PersonID不匹配,则它是一个新的人员实例。我希望这个查询能改变表,将值放在一个新列中,而不仅仅是在查询中返回。

SELECT *,
lag(PersonID, 1) OVER(ORDER BY PersonID ASC) AS test
FROM Data_Temp

PersonID是现有列,test是具有PersonID 中lag值的新列

PersonID测试
1
21
3

一种方法是在SELECT上使用CREATE VIEW语句,这将允许您替换旧表,并避免使用ALTER TABLEUPDATE语句。

CREATE OR REPLACE VIEW Data_Temp_With_Lags AS
SELECT *,
lag(PersonID, 1) OVER(ORDER BY PersonID ASC) AS test
FROM Data_Temp

由于这是一个VIEW,所以只有在您需要时才会计算数据。如果您希望存储数据,则需要将其更改为TABLE

如果这是更大查询的一部分,则可以将SELECT存储在WITH子句中,而不是创建视图或表。

有关共有表支出的更多信息,请参阅:https://dev.mysql.com/doc/refman/8.0/en/with.html.

相关内容

  • 没有找到相关文章

最新更新