Sql 在列中查找下一个日期值
我有一个包含以下列和示例值的大表:Sql 在列中查找下一个日期值,sql,Sql,我有一个包含以下列和示例值的大表: ID Ser Reg Date 1 12345 001 1/3/2011 1 12345 001 2/2/2011 1 12345 002 1/3/2011 1 12345 002 2/2/2011 2 23456 001 1/3/2011 2 23456 001 2/7/2011 2 23456 001 3/5/2011 我从上一个post SQL中尝试了此查询-选择下一个日期查询-但没有得
ID Ser Reg Date
1 12345 001 1/3/2011
1 12345 001 2/2/2011
1 12345 002 1/3/2011
1 12345 002 2/2/2011
2 23456 001 1/3/2011
2 23456 001 2/7/2011
2 23456 001 3/5/2011
我从上一个post SQL中尝试了此查询-选择下一个日期查询-但没有得到所需的结果:
SELECT
mytable.id,
mytable.date,
(
SELECT
MIN(mytablemin.date)
FROM mytable AS mytablemin
WHERE mytablemin.date > mytable.date
) AS NextDate
FROM mytable
这就是我努力实现的目标:
ID Ser Reg curr_Date prev_Date
1 12345 001 2/2/2011 1/3/2011
1 12345 002 2/2/2011 1/3/2011
2 23456 001 2/7/2011 1/5/2011
2 23456 001 3/5/2011 2/7/2011
我将非常感谢您对这项任务的任何帮助 将mytable的mytablemin副本与mytable连接的相关子查询缺少一个条件。此外,您还可以删除没有NextDate的记录,但如果在组(Id、Ser、Reg)中只存在一条记录,则从结果集中删除该记录可能会产生错误的结果
select * from
(
SELECT
mytable.id,
mytable.date,
(
SELECT
MIN(mytablemin.date)
FROM mytable AS mytablemin
WHERE mytablemin.date > mytable.date
and mytablemin.id = mytable.id
and mytablemin.Ser = mytable.Ser
and mytablemin.Reg = mytable.Reg
) AS NextDate
FROM mytable
) a
where a.NextDate is not null
下面是使用带聚合的派生表的版本:
SELECT
mytable.id,
mytable.date,
mytablemin.minDate
FROM mytable
inner join
(
SELECT mytablemin.id,
mytablemin.Ser,
mytablemin.Reg,
MIN(mytablemin.date) minDate
FROM mytable AS mytablemin
group by mytablemin.id,
mytablemin.Ser,
mytablemin.Reg
having MIN(mytablemin.date) is not null
) AS mytablemin
on mytablemin.id = mytable.id
and mytablemin.Ser = mytable.Ser
and mytablemin.Reg = mytable.Reg
如果您使用的是oracle数据库(您没有提到过,那么我可以假设任何情况) 然后,您可以为此使用超前和滞后功能/命令
select id,ser, reg, curr_date ,prev_date
from
(
select id,ser, reg, ser, date curr_date
LEAD(date, 1, 0) OVER (PARTITION BY id,ser, reg, curr_date ORDER BY date DESC NULLS LAST) prev_date,
)
where prev_date is not null;
欢迎使用StackOverflow:如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以精确地格式化和语法突出显示它!什么数据库系统,哪个版本??SQL只是结构化查询语言-一种被许多数据库系统使用的语言-SQL不是数据库产品。。。像这样的东西通常是特定于供应商的-所以我们真的需要知道您使用的是什么数据库系统。。。。