Alter Table中的LAG函数产生窗口函数错误

时间:2015-12-05 16:27:40

标签: sql-server

以下代码正常     选择date_trans,time_trans,价格,     价格 - 滞后(价格,1,0)结束(按日期_顺序ASC,time_trans ASC排序)作为pChng     来自dbo.A_1

但是,如果我尝试更改表并添加具有类似代码的列,则会出现错误。它联系到我的窗口函数在order by子句中,所以我不明白为什么错误

Alter table dbo.A_1 Add pChng as price - lag(price,1,0) over(order by date_trans ASC, time_trans ASC)

1 个答案:

答案 0 :(得分:4)

您无法将其添加为计算列。

你可以

  • 添加接受date_trans和time_trans参数的标量UDF,然后返回前一行的价格并在计算列中引用该值。
  • 或者只使用lag列创建视图。
  • 或者使用触发器自行维护pChng列。

这三个选项在效率和实现复杂性之间存在各种权衡。例如,如果对整个表进行查询,第一个可能比第二个效率低得多。