我尝试了以下查询,但它会抛出错误,
当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式
UPDATE dbo.SFData
SET KPIperMonth =
(SELECT KPIValue, KPIValue - LAG(KPIValue) OVER (ORDER BY SFID) PreviousValue
from dbo.SFData)
我所拥有的是如下表格
SFID|KPIValue|KPIperMonth
---------------------
1 |1 |
2 |3 |
3 |5 |
上表显示了以KPIValue为单位的累计销售额。我想要这些结果:
SFID|KPIValue|KPIperMonth
---------------------
1 |1 |1
2 |3 |2 (3-1)
3 |5 |2 (5-3)
试试这个:
WITH Previous_KPI AS
(
SELECT SFID, KPIValue, KPIValue - LAG(KPIValue,1,0) OVER (ORDER BY SFID) PreviousValue
FROM SFData
)
UPDATE
SFData
SET
SFData.KPIperMonth = Previous_KPI.PreviousValue
FROM
SFData
LEFT JOIN Previous_KPI
ON SFData.SFID = Previous_KPI.SFID