Aus 1 mach (bis zu) 5.
-
Hallo
Ich denke, ich habe ein recht alltägliches Problem, aber ich kenne den geeigneten Weg zur Lösung wohl noch nicht: Gegeben ist eine Adressverwaltung mit Ansprechspartnern, die bis zu 4 Telefone, sowie einen Fax eintragen dürfen. Nun möchte ich alle Nummern - nicht nur die Ansprechpartner selbst - in eine andere Tabelle bekommen, damit man sie später weiterverarbeiten kann. Ich möchte eine Transformation nach folgendem System:
Peter Muster|123|456|789
123|Peter Muster 456|Peter Muster 789|Peter Muster
Wie sieht ein T-SQL Query aus, welches mir die Daten so aufbereitet? Oder muss ich mehrere
SELECT
s überUNION
mergen?Besten Dank für die Hilfe
-
Speicherst du alle Telefonnummern in nur einem einzigem Feld? Das solltest du nicht tun.
-
Jede Telefonnummer hat eine eigene Spalte; jeder Ansprechpartner hat eine Zeile, dort sind 5 Spalten mit den Nummern.
Nun will ich bis zu 5 Zeilen für die Nummern, wo immer auch der Ansprechpartner steht. So eine Art Pivot.
Verständlicher?
PS: Nein, ich habe die Datenbank nicht designed.
-
Ich glaube du musst hier UNION einsetzen:
( SELECT name, mobile AS phone FROM table WHERE mobile IS NOT NULL UNION SELECT name, landline AS phone FROM table WHERE landline IS NOT NULL UNION ... ) ORDER BY name ASC
MfG SideWinder
-
@SideWinder: Danke. Ich habe befürchtet, dass es darauf hinaus läuft und darum war ich auf der Suche nach einem eleganteren Weg.
Aber ja, dann gibts halt einen Haufen
UNION
s undJOIN
s.Danke.
: Ich habe einen Weg gefunden mittels
UNPIVOT
-
Poste doch mal ein bsp. Das machts einfacher wenns mal jemand anders auch braucht
-
Ja, sehr gerne. Ich habe gezögert, weil es nicht gerade sehr verständlich ist:
SELECT Contact, [Description], Number FROM #... AS ... UNPIVOT ( Number FOR Numbers IN (AAS_SBTEL1, AAS_SBTEL2, AAS_SBTEL3, AAS_SBFAX) ) [UNPIVOT] WHERE NOT LEN(Number) = 0
Erläuterungen:
AAS_SBTEL1
,AAS_SBTEL2
,AAS_SBTEL3
undAAS_SBFAX
sind die Spalten mit den Nummern.Name
und[Description]
sind einfache Strings.
Dabei bekommt man alle Nummern und die dazu gehörenden Informationen (Ansprechperson, Beschreibung, etc.).
Hoffe, das ich jemandem damit helfen konnte. Besten Dank nochmals an alle