Предполагая, из входных данных, что каждый code
может только больше появляться один раз для serial
, это может быть способ:
/* test case */
with testTable(Serial,Code, DateTime) as (
select 'A123', 'B2', to_date('01/01/17:14:00', 'dd/mm/yy:hh24:mi') from dual union all
select 'A124', 'B2', to_date('01/01/17:14:00', 'dd/mm/yy:hh24:mi') from dual union all
select 'A123', 'B3', to_date('01/01/17:14:05', 'dd/mm/yy:hh24:mi') from dual union all
select 'A123', 'B4', to_date('01/01/17:14:08', 'dd/mm/yy:hh24:mi') from dual union all
select 'A124', 'B3', to_date('01/01/17:14:00', 'dd/mm/yy:hh24:mi') from dual union all
select 'A128', 'B2', to_date('03/01/17:14:00', 'dd/mm/yy:hh24:mi') from dual union all
select 'A129', 'B2', to_date('03/01/17:14:00', 'dd/mm/yy:hh24:mi') from dual union all
select 'A129', 'B4', to_date('02/01/17:14:00', 'dd/mm/yy:hh24:mi') from dual
)
/* the query */
select serial
from testTable
group by serial
having listagg(case when code in ('B2', 'B3', 'B4') then code end) within group (order by dateTime) like '%B2B3B4%'
Идея состоит в том, чтобы заполнить форму serial
, построив для каждого serial
строку, содержащую codes
, по заказу dateTime
.
Если предположить, что каждый code
может появиться только один раз для serial
единственного serials
, которые соответствуют вашему состоянию будет иметь строки, содержащие 'B2B3B4'
.
CASE
предназначен для обработки футляра, который необходимо проверить, имеет ли серийный номер B2, B3, B5
, где может быть даже B4
.
Это должно лучше объяснить, как это должно работать:
select serial, listagg(case when code in ('B2', 'B3', 'B4') then code end) within group (order by dateTime) as string
from testTable
group by serial;
SERI STRING
---- ---------------
A123 B2B3B4
A124 B2B3
A128 B2
A129 B4B2
с тем, что данные таблицы, что ожидаемый результат? – jarlh
Привет, Спасибо за быстрый ответ ... Я ожидаю обратно Serial A123 в приведенном выше примере ... Итак, ive попытался: выберите * из Codes_Table, где ((Code = 'B2') OR ('Code =' B3 ') OR (Code = 'B4')), но не могу на самом деле задуматься о том, как затем проверить, не возникли ли они в порядке даты ... –
Пожалуйста, отредактируйте свой вопрос, чтобы показать [то, что вы пробовали до сих пор] (http : //whathaveyoutried.com). Вы должны включить [mcve] кода, с которым у вас возникают проблемы, тогда мы можем попытаться помочь с конкретной проблемой. Вы также должны прочитать [ask]. –