SQL: Mehrere Spaltenwerte vereinen

Hallo Zusammen,

ich bin gerade total überfragt…
ich habe, vereinfacht ausgedrückt, folgende Abfrage (Rest der Abfrage ist nicht relevant):
SELECT AD.Auftrag, AD.Lieferart
FROM dbo.Auftrag as AD

Lieferart kann folgende Werte ausgeben:

  • Montage Blabla
  • Lieferung 1
  • Lieferung 2
  • Lieferung 3
  • Abholung Schnickschnack


    Ziel ist es, Werte der Spalte Lieferart zu vereinen:
  • Montage Blabla -> Montage
  • Lieferung 1, 2 oder 3 -> Lieferung
  • Abholung Schnickschnack -> Abholung


    Habt Ihr eine Idee, ob dies möglich ist? Wenn ja, wie?
    Bin leider nicht sooo fit, was SQL betrifft…

Zur Info: Bewege mich im SQL Server Management Studio auf Windows Server 2012 R2

Vielen Dank im Voraus und ein schönes Wochenende.

test=# create table danew209(id int, lieferart text);
CREATE TABLE
test=*# copy danew209 from stdin;
Geben Sie die zu kopierenden Daten ein, gefolgt von einem Zeilenende.
Beenden Sie mit einem Backslash und einem Punkt alleine auf einer Zeile, oder einem EOF-Signal.
>> 1	Montage Blabla
>> 2	Lieferung 1
>> 3	Lieferung 2
>> 4	Lieferung 3
>> 5	Abholung Schnickschnack
>> \.
COPY 5
test=*# select *, regexp_replace(lieferart, '\ .*$','') from danew209 ;
 id |        lieferart        | regexp_replace 
----+-------------------------+----------------
  1 | Montage Blabla          | Montage
  2 | Lieferung 1             | Lieferung
  3 | Lieferung 2             | Lieferung
  4 | Lieferung 3             | Lieferung
  5 | Abholung Schnickschnack | Abholung
(5 Zeilen)

test=*#

so vielleicht? Was verstehst Du unter “vereinen”?

Ich denke, das Problem ist relativ unabhängig von der Datenbank.
Beim Finden/Auswerten von Mustern kann natürlich das eine Regex anders als das andere sein, aber das ist etwas nebensächlich oder?

Schätze das Grundproblem ist ziemlich verbreitet: Eine Kategorienspalte, in die jeder seinen Sch… einträgt und fertig ist das Chaos.

zur Bereinigung:
on-the-fly: baue einen Ausdruck (oder Funktion), die alle Inhalte auf eine definierte Menge eindampft (schwierig, wenn immer neuer Sch… dazu kommt)
offline: Selektiere Wertegruppen, die zu einer Kategorie zusammengefasst werden sollen, individuell mit spezifischen Where Bedingungen und mache darauf ein Update mit nur noch einer Kategorie.

dann, wenn es (mal kurz) sauber ist, kann man das Datenmodell so ändern, dass nur vorgegebene Kategorien akzeptiert werden. Dafür gibt es verschiedene Möglichkeiten, z.B. ein Constraint, der nur bestimmte (Text)werte erlaubt (easy, low impact, weil ja offenbar ein Textfeld hier vorliegt) oder eine Ausgliederung der Kategorie in eine Nachschlagetabelle und Verknüpfung per ID (easy, high impact).

Ich muss gar nichts verwenden, der TE vielleicht.

lol

der Fragesteller hatte sich eh verlaufen und fragt nun in einem anderen Forum weiter …

Kein Problem, der (unterbewusste) Gedankengang: “Der Beitrag ist nicht von akretschmer und nicht von mir selbst, also muss es der Fragesteller sein” ist in diesem Forum ja ziemlich naheliegend.
:slight_smile: