ich habe eine Abfrage mit id, auftrag, status_auftrag. der status kann 1 oder 2 sein.
Jetzt will ich alle Aufträge mit status=1 in Spalte eins und Aufträge mit status=2 in Spalte zwei haben.
Wie teile ich die Daten einer Spalte auf zwei auf?
Nein, hier die Select Anweisung.
select
orga.lfnr,
date_format(auftraege.spielbegin,"%m/%y")as M,
date_format(auftraege.spielbegin,"%d.%m.%Y") as S,
count(auftraege.lfnr)*1.0 as cnt
from
auftraege
inner join ma_orga on auftraege.abschluss_maorga=ma_orga.Id
inner join orga on ma_orga.Orga=orga.lfnr
where
fkt_aktstat(auftraege.status_kontrolle, auftraege.SpielBegin,auftraege.status,now()) between 2 and 8
and
orga.gruppe = 6
group by
date_format(auftraege.spielbegin,"%Y%m")
Der Staus der Aufträge ist zwischen 2 und 8. Aufträge mit status = 2 sollen in die Spalte 1, Aufträge mit status=3 bis 8 sollen in einer anderen Spalte angezeigt werden.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Nein, hier die Select Anweisung.
select
orga.lfnr,
date_format(auftraege.spielbegin,"%m/%y")as M,
date_format(auftraege.spielbegin,"%d.%m.%Y") as S,
count(auftraege.lfnr)*1.0 as cnt
from
auftraege
inner join ma_orga on auftraege.abschluss_maorga=ma_orga.Id
inner join orga on ma_orga.Orga=orga.lfnr
where
fkt_aktstat(auftraege.status_kontrolle,
auftraege.SpielBegin,auftraege.status,now()) between 2 and 8
and
orga.gruppe = 6
group by
date_format(auftraege.spielbegin,"%Y%m")
Der Staus der Aufträge ist zwischen 2 und 8. Aufträge mit
status = 2 sollen in die Spalte 1, Aufträge mit status=3 bis 8
sollen in einer anderen Spalte angezeigt werden.
ok, alles klar . DECODE ist der Weg…
kleines Beispiel :
select SPALTE_1, DECODE(SPALTE_2,0,0,1,1,2,2,3,3) as SPALTE_2, DECODE(SPALTE_2,-1,-1) as NEUE_SPALTE from my_table
ich habe eine Abfrage mit id, auftrag, status_auftrag. der
status kann 1 oder 2 sein.
Jetzt will ich alle Aufträge mit status=1 in Spalte eins und
Aufträge mit status=2 in Spalte zwei haben.
Wie teile ich die Daten einer Spalte auf zwei auf?
der bisherige Vorschlag war Orcale-spezifisch. Wenn es Standard-SQL sein soll, dann sollte es so gehen:
SELECT id,
CASE WHEN status=1 THEN auftrag
ELSE null
END,
CASE WHEN status=2 THEN auftrag
ELSE null
END
FROM ...;