正如问题所示,除了不同的行之外,有没有办法在同一列上进行数学运算?
实施例。
Table A:
X Y Time New_time
0 aaa bbb 5 3
1 aaa bbb 2 1
2 aaa bbb 1 null
我想找到每一行的时间差异。因此第0行将new_time设为3分钟。我该怎么做呢?
提前谢谢你。
答案 0 :(得分:2)
您可以使用SQL Server 2012中引入的LEAD
分析函数:
CREATE TABLE [dbo].[Times]
(
[ID] [INT] IDENTITY(1, 1)
NOT NULL ,
[X] [NVARCHAR](50) NOT NULL ,
[Y] [NVARCHAR](50) NOT NULL ,
[Time] [INT] NOT NULL
);
INSERT INTO [dbo].[Times]
( X, Y, [Time] )
VALUES ( 'aaa', 'bbb', 5 ),
( 'aaa', 'bbb', 2 ),
( 'aaa', 'bbb', 1 );
SELECT * ,
New_Time = [Time] - ( LEAD([Time]) OVER ( ORDER BY ID ) )
FROM [Times];
输出将是:
答案 1 :(得分:1)
declare @Table1 table(id int, x varchar(10), y varchar(10), [time] int)
insert into @Table1 values
(0,'aaa', 'bbb', 5)
,(1,'aaa', 'bbb', 2)
,(2,'aaa', 'bbb', 1)
select *,
[time] - LEAD([Time]) over(order by id) as NewTime
from @Table1