Таблица запросов 1 с несколькими критериями из разных строк, которые зависят друг от друга - PullRequest
0 голосов
/ 01 октября 2018
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 таблице, где мне нужен идентификатор в зависимости от данных в другой строке в той же таблице.Я новичок в Oracle SQL.

У меня будет следующее:

  • type
  • добавленная дата

Мне нужно знатькакой идентификатор и сегмент имеют тип 2222, добавленный в 20180901 с датой начала до 20180901. Также для этого идентификатора существует тип 4444 с датой начала до 20180901 и после даты начала сегмента 2222.

В этомНапример, это будет только идентификатор первой строки - 12345 Сегмент -10.

Начиная со следующего:

  • У идентификатора есть сегмент «2222» с добавленной датой, равной
  • У идентификатора есть «4444» с датой начала между указанной выше датой начала сегмента «2222» и добавленной датой.

Заранее благодарим за помощь.

Действительно,

Венди

1 Ответ

0 голосов
/ 01 октября 2018

Вы не публикуете свои 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
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...