sql-server - 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
请帮忙
解决方案
如果您的 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 序列中的间隙更健壮,而且可能更快(待测试)
推荐阅读
- smartcard - PKCS#11:C_Decrypt 返回 CKR_OPERATION_NOT_INITIALIZED
- python - isfile() 和 isdir() 函数都可以评估为 False 吗?
- macos - Ionic Build on Mac for Android 模拟器抛出 Kotlin 错误
- java - 在递归中打印 queue.peek() 打印不相关的值
- c# - 带有 .NET 标准库的 Xamarin.Android 上的 JsonSerializationException“找不到构造函数”
- asp.net-core-2.0 - 默认的 .net 核心控制器如何路由“值”?
- r - 按参与者 ID 聚合数据集
- hadoop - 如何通过 API 传递参数以供 Oozie 中的 shell 脚本获取?
- java - 应用程序停止工作:单击列表选项时猜词游戏停止工作
- visual-c++ - Visual Stidio 2015 # pragma comment (linker, "/EXPORT options