【发布时间】:2020-09-30 09:44:48
【问题描述】:
我不知道这是否可能,但我觉得我以前可能做过,但丢失了那部分代码。我正在尝试制作一个包含子查询内部联接的 select 语句,以显示同一表中两个日期之间的天数。
数据结构的一个简单示例如下所示:
Name ID Date Day Hours
Bill 1 3/3/20 Thursday 8
Fred 2 4/3/20 Monday 6
Bill 1 8/3/20 Tuesday 2
根据这些数据,我想选择每一行加上一个额外的列,即每个 ID 的每一行的日期之间的天数。比如:
Select * from tblData
Inner join (datediff(Select Top(1) Date from tblData where Date < Date), Date) And ID = ID)
或为简单起见:
Select * from tblData
Inner join (datediff(Select Top(1) Date from tblData where Date < 8/3/20), 8/3/20) And ID = 1)
生成的数据集如下所示:
Name ID Date Day Hours DaysBtwn
Bill 1 3/3/20 Thursday 8 4 (Assuming there was an earlier row in the table)
Fred 2 4/3/20 Monday 6 5 (Assuming there was an earlier row in the table)
Bill 1 8/3/20 Tuesday 2 5 (Based on the previous row date being 3/3/20 for Bill)
这有意义吗?我是否试图以错误的方式做到这一点?我想对表中大约 600000 行执行此操作,因此效率是关键,所以如果有更好的方法来执行此操作,我愿意接受建议。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
标签: sql datetime subquery inner-join window-functions