首页 > 解决方案 > datediff 两列不同行 sql

问题描述

嗨我想请知道如何计算 Datediff 两列不同的行 sql。发货日期和下一个订单日期之间的天数

我有以下

Id      orderid orderdate    dispacheddate 
A       1       10/04/2003   15/05/2003
A.      2.      17/06/2004   20/08/2004

我想添加 datediff 列。所以第一行将为空

下一行显示 399

请帮忙

标签: sql-server

解决方案


如果您的 orderID 是顺序的,只需加入下一个 ID

SELECT t.id, t1.id, datediff(t.dispacheddate, t1.orderdate) 
FROM myTABLE as t
LEFT JOIN myTABLE as t1 ON t1.id=t.id+1

或者使用优秀评论中建议的更现代的 LAG/LEAD,假设您使用的是 SQL Server。如果不是,以前的方法非常普通,可以“在任何地方”工作。

SELECT id, datediff(LAG(dispacheddate,1,0) OVER(ORDER BY id) , orderdate) 
FROM myTABLE

这不仅对 ID 序列中的间隙更健壮,而且可能更快(待测试)


推荐阅读