SQL Daten in einer Spalte auf zwei aufteilen

Hallo,

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?

Danke für Euere Hilfe

  • Vielleicht habe ich dich falsch verstanden, aber willst du folgendes erreichen : (?)

  • Erstellen einer neuen Spalte NEUE_SPALTE in der Tabelle…

UPDATE MY_TABLE SET NEUE_SPALTE =auftrag
WHERE STATUS=2
/

UPDATE MY_TABLE SET auftrag=NULL
WHERE STATUS=2
/

COMMIT;

  • Aber eben, bin nicht sicher,ob es dass ist, was du brauchst…

Gruss

[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.

[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 :smile:. 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

Hoffe, nun ist alles klar :smile:

Gruss

Hallo Friday,

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 ...;

Alles Gute wünscht
… Michael

Hallo,

mit decode() habe ich dass nicht richtig geschnallt, weil decode ja zeichenketten decodiert.

hier meine lösung:

sum(if (fkt_aktstat(auft.st_kontrolle, auft.SpielBegin,auft.storn_zu,now())=2,1,0)) as cnt,

sum(if (fkt_aktstat(auft.st_kontrolle, auft.SpielBegin,auft.st_zu,now())=6,1,0)) as cnt_2

ist was mit status = $status drin dann summieren

Danke trotzdem

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]