Unter der Annahme, von Eingabedaten, dass jeder code
nur einmal für eine serial
occure kann, könnte dies ein Weg sein:
/* 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%'
Die Idee hier ist, durch serial
zu aggregieren, das für jede serial
eine Schnur bildet, die die codes
enthält, geordnet durch dateTime
.
Unter der Annahme, dass jeder code
nur einmal für eine serial
die einzige serials
erscheinen können, die Ihre Bedingung entsprechen Strings 'B2B3B4'
enthalten haben.
Die CASE
wird verwendet, um den Fall zu behandeln, den Sie überprüfen müssen, ob eine Seriennummer B2, B3, B5
hat, wo sogar B4
auftreten kann.
Dies sollte besser erklären, wie das funktionieren soll:
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
Mit dieser Tabelle Daten, was ist das erwartete Ergebnis? – jarlh
Hallo, Danke für die schnelle Antwort ... Ich erwarte Serial A123 im obigen Beispiel ... Bis jetzt habe ich es versucht: Wähle * aus Codes_Tabelle wo ((Code = 'B2') ODER ('Code =' B3 ') ODER (Code = 'B4')), aber ich kann mich nicht wirklich darum kümmern, wie man dann überprüft, ob sie in einer Datumsreihenfolge vorkommen ... –
Bitte [bearbeiten] Sie Ihre Frage, um [was Sie bisher versucht haben] (http : //whathaveyoutried.com). Sie sollten eine [mcve] des Codes einbeziehen, mit dem Sie Probleme haben, dann können wir versuchen, mit dem spezifischen Problem zu helfen. Sie sollten auch [fragen] lesen. –