SQL-从行中获取值
我有下表:SQL-从行中获取值,sql,Sql,我有下表: id date name id2 1 1/1/2017 demi 2 1/2/2017 demi 3 1/3/2017 demi 我希望id2列显示基于最近日期的id。输出应为: id date name id2 1 1/1/2017 demi 2 2 1/2/2017 demi 3 3 1/3/2017 demi 非常感谢您的帮助。对于MS SQL,您可以
id date name id2
1 1/1/2017 demi
2 1/2/2017 demi
3 1/3/2017 demi
我希望id2列显示基于最近日期的id。输出应为:
id date name id2
1 1/1/2017 demi 2
2 1/2/2017 demi 3
3 1/3/2017 demi
非常感谢您的帮助。对于MS SQL,您可以使用下一个查询: id |日期|姓名| id2 -: | :------------------ | :--- | ---: 2017年1月1日00:00:00半小时2 2017年2月1日00:00:00 2017年3月1日00:00:00半小时无效
dbfiddle我不明白,对于id=1的行,如何找到id2值2?您能更好地解释您的要求吗?这没有道理。对于ID1和id2,id2的两个值不应该都是3吗?这是'demi'的最长日期为什么第1行的id2设置为2?表中最近的日期是2017年1月3日,这意味着所有行的id2都应设置为3。你的意思是想知道下一行的日期吗?我没有很好地描述这个问题。很抱歉。我有另一个名为Entid的列,它是唯一标识符。基本上,我希望id2根据之后最近的日期显示行的id。在这种情况下,最近的日期不是2017年1月3日吗?在这种情况下,它不会显示id2的任何内容。
create table mytable (id int, [date] date, name varchar(100), id2 int);
insert into mytable values
(1, '20170101', 'demi', null),
(2, '20170201', 'demi', null),
(3, '20170301', 'demi', null);
GO
3 rows affected
SELECT id, [date], name,
(SELECT TOP 1 id
FROM mytable
WHERE [date] > t1.[date]
ORDER BY id, [date] ASC) id2
FROM mytable t1
GO
id | date | name | id2
-: | :------------------ | :--- | ---:
1 | 01/01/2017 00:00:00 | demi | 2
2 | 01/02/2017 00:00:00 | demi | 3
3 | 01/03/2017 00:00:00 | demi | null