ID segment Type start date end date added date
----------------------------------------------------------------
12345 10 2222 20170101 20200101 20180901
12345 20 2222 20140101 20160101 20150901
12345 50 4444 20170301 20200101 20180901
12345 60 4444 20140101 20160101 20150901
56789 4 2222 20170101 20200101 20180901
56789 6 2222 20140101 20160101 20150901
56789 10 3333 20170301 20200101 20180901
56789 56 3333 20140101 20160101 20150901
56789 7 4444 20110301 20120101 20180901
56789 12 4444 20100101 20100301 20150901
我很难在1个表中查询数据,根据同一表中不同行中的数据,我需要一个ID。我是Oracle SQL的新手。
我将拥有以下内容:
我需要知道哪个ID和段在20180901上添加了类型2222,其开始日期在20180901之前。此外,对于该ID,还有一个类型4444,其起始日期在20180901之前并且在2222段的开始日期之后。 / p>
在此示例中,它仅是第一行ID-12345 Segment -10。
由于以下原因:
预先感谢您的帮助。
真的
温迪
答案 0 :(得分:0)
您不会发布DDL CREATE TABLE ...
SQL语句,因此我只能猜测确切的表名和列名/类型。您要查找的查询应类似于:
select
*
from my_table t1
where type = 2222
and added_date = date '2018-09-01'
and start_date < date '2018-09-01'
and exists (
select 1 from my_table t2
where t2.id = t1.id
and t2.type = 4444
and t2.start_date < date '2018-09-01'
and t2.start_date > t1.start_date
)