对于这个SQL,
SELECT CID, Time, Val
FROM MyTable
WHERE CID = 8
我得到以下数据,
CID, Time, Val
8,2016-10-19 13:49:06.217,7.036
8,2016-10-19 13:49:15.237,6.547
8,2016-10-19 13:49:46.063,6.292
8,2016-10-19 13:49:57.387,5.998
我希望每个Time
值减去开始时间,可以通过
SELECT MIN(Time) StartTime
FROM MyTable
WHERE CID = 8
我知道我可以定义一个T-SQL变量来执行此操作,但是,是否可以在一个SQL中执行任务,获取每个记录的相对时间而不是绝对时间?
答案 0 :(得分:4)
您可以使用min()
窗口函数来获取每个id的最短时间,并将其用于减法。
select cid,time,val,
datediff(millisecond,min(time) over(partition by cid),time) as diff
from mytable
根据您的要求更改差异间隔(显示millisecond
)。如果差异太大,可能会出现溢出。