Sql 求和并更新临时跳过记录
我有一个临时表tbl,它的顺序是这样的,我试图计算第一条记录和第二条记录、第二条记录和第三条记录之间的差异,以此类推,更新名为Diff的字段中的结果 要解决的第二个问题是,我必须只取codeid22到23之间的差异,我必须丢弃codeid23到下一个22之间的差异。I CodeId=22表示开始,23表示停止,我必须计算驾驶时间Sql 求和并更新临时跳过记录,sql,sql-server-2012,Sql,Sql Server 2012,我有一个临时表tbl,它的顺序是这样的,我试图计算第一条记录和第二条记录、第二条记录和第三条记录之间的差异,以此类推,更新名为Diff的字段中的结果 要解决的第二个问题是,我必须只取codeid22到23之间的差异,我必须丢弃codeid23到下一个22之间的差异。I CodeId=22表示开始,23表示停止,我必须计算驾驶时间 Fecha Driver CodeId Diff 2014/03/01 14:00:00, 7168, 22 ,
Fecha Driver CodeId Diff
2014/03/01 14:00:00, 7168, 22 , 0
2014/03/01 14:30:00, 7168, 23 , 0
2014/03/01 14:40:00, 7168, 22 , 0
2014/03/01 16:10:00, 7168, 23 , 0
2014/03/01 16:50:00, 7168, 22 , 0
2014/03/01 17:20:00, 7168, 23 , 0
2014/03/01 18:30:00, 7168, 22 , 0
2014/03/01 19:10:00, 7168, 23 , 0
我写了这段代码,但我发现了一个错误:
UPDATE #tbl
SET Difer = DATEDIFF(second, Fecha, LEAD(Fecha,1, Fecha) OVER (ORDER BY Fecha))
FROM #tbl
Msg 4108, Level 15, State 1, Line 2
Windowed functions can only appear in the SELECT or ORDER BY clauses.
Im使用MS SQL server 2012
不知道怎么解决,你能帮我吗。多谢各位
我在等待帮助的时候写了这段代码
; WITH Sumar AS (
Select Fecha as Fecha1,
DATEDIFF(second, Fecha, LEAD(Fecha,1, Fecha) OVER (ORDER BY Fecha)) as Total
FROM #tbl)
UPDATE #tbl
SET Difer = Total
FROM Sumar
WHERE Fecha = Fecha1 AND EvenTypeId <> 23
对我来说工作很好。谢谢大家。试试这个
;WITH CTE_GO
AS(
SELECT Fecha , Driver, CodeId,Diff,
ROW_NUMBER() OVER (ORDER BY Fecha ASC) RN_Go
FROM #tbl
WHERE CodeId = 22
),
CTE_Stop
AS
(
SELECT Fecha , Driver, CodeId,Diff,
ROW_NUMBER() OVER (ORDER BY Fecha ASC) RN_Go
FROM #tbl
WHERE CodeId = 23
)
UPDATE S
SET S.Diff = DATEDIFF(MINUTE, G.Fecha, S.Fecha)
FROM CTE_GO G INNER JOIN CTE_Stop S
ON G.RN_Go = S.RN_Go
结果集
谢谢你的回答M.阿里,我在等待帮助的时候试着写了下面的代码和作品。再次感谢你
╔═════════════════════════╦════════╦════════╦══════╗
║ Fecha ║ Driver ║ CodeId ║ Diff ║
╠═════════════════════════╬════════╬════════╬══════╣
║ 2014-03-01 14:00:00.000 ║ 7168 ║ 22 ║ 0 ║
║ 2014-03-01 14:30:00.000 ║ 7168 ║ 23 ║ 30 ║
║ 2014-03-01 14:40:00.000 ║ 7168 ║ 22 ║ 0 ║
║ 2014-03-01 16:10:00.000 ║ 7168 ║ 23 ║ 90 ║
║ 2014-03-01 16:50:00.000 ║ 7168 ║ 22 ║ 0 ║
║ 2014-03-01 17:20:00.000 ║ 7168 ║ 23 ║ 30 ║
║ 2014-03-01 18:30:00.000 ║ 7168 ║ 22 ║ 0 ║
║ 2014-03-01 19:10:00.000 ║ 7168 ║ 23 ║ 40 ║
╚═════════════════════════╩════════╩════════╩══════╝