MS SQL - Zeilen zu Spalten
Hallo.
Das Thema ist nicht neu, aber ich habe mit allen gefundenen Lösungen meine Fragestellung nicht umgesetzt bekommen.
Ich habe eine recht einfache Tabelle, die so vorgegeben, also nicht von mir beeinflussbar ist:
Masken sind fast 2000 in der Tabelle, Lognamen vlt. 20, beide Angaben sind inhaltlich also dynamisch.
Die Ausgabe soll sein:
Im Grunde also eine Tabellenansicht der Maskenzuordnungen zu den Lognamen.
Kann wer helfen? Danke schonmal im Voraus!
Das Thema ist nicht neu, aber ich habe mit allen gefundenen Lösungen meine Fragestellung nicht umgesetzt bekommen.
Ich habe eine recht einfache Tabelle, die so vorgegeben, also nicht von mir beeinflussbar ist:
ID, Maske , Logname
1 , einkauf , mueller
1 , vertrieb , mueller
1 , einkauf , meier
1 , fertigung, meier
...
Masken sind fast 2000 in der Tabelle, Lognamen vlt. 20, beide Angaben sind inhaltlich also dynamisch.
Die Ausgabe soll sein:
Maske , mueller, meier, ...
einkauf , x , x , ...
vertrieb , x , - , ...
fertigung, - , x , ...
Im Grunde also eine Tabellenansicht der Maskenzuordnungen zu den Lognamen.
Kann wer helfen? Danke schonmal im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5588244449
Url: https://administrator.de/contentid/5588244449
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
5 Kommentare
Neuester Kommentar
Moin,
Da wirst du dich mit PIVOT() / UNPIVOT() beschäftigen dürfen…
https://learn.microsoft.com/de-de/sql/t-sql/queries/from-using-pivot-and ...
Da wirst du dich mit PIVOT() / UNPIVOT() beschäftigen dürfen…
https://learn.microsoft.com/de-de/sql/t-sql/queries/from-using-pivot-and ...
Guten Morgen,
Dein Stichwort ist "Transponieren".
Zum Beispiel hier: im-coder.com/einfache-moeglichkeit-zum-transponieren-von-spalten-und-zeilen-in-sql.html
VG
SH
Dein Stichwort ist "Transponieren".
Zum Beispiel hier: im-coder.com/einfache-moeglichkeit-zum-transponieren-von-spalten-und-zeilen-in-sql.html
VG
SH
Moin,
hab es mal mit PIVOT und einem "Trick" erstellt/ adaptiert.
Erstellen einer Testabelle:
Darstellung der Tabelle mit einer dynamischen PIVOT-Funktion:
Quelle: https://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-qu ...
Ergebnis:
hab es mal mit PIVOT und einem "Trick" erstellt/ adaptiert.
Erstellen einer Testabelle:
CREATE TABLE mytable(
id int
, MASKE nvarchar(32)
, NAME nvarchar(32)
)
INSERT INTO myTable (id, MASKE, NAME) VALUES
(1, 'einkauf', 'meier')
, (2, 'verkauf', 'meier')
, (3, 'produktion', 'meier')
, (4, 'einkauf', 'mueller')
, (5, 'verkauf', 'mueller')
, (6, 'fibu', 'schulze')
, (7, 'einkauf', 'schmidt')
, (8, 'materialwirtschaft', 'schmidt')
, (9, 'einkauf', 'jacke')
, (10, 'verkauf', 'hose')
, (11, 'projekte', 'hose')
, (12, 'einkauf', 'socke')
, (13, 'verkauf', 'jacke')
Darstellung der Tabelle mit einer dynamischen PIVOT-Funktion:
//Definieren von Variablen
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
//Hier werden alle möglichen NAMEN ermittelt
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(myTable.[NAME])
FROM myTable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
//erstellen des Queries, basierend auf den dynamisch ermittelten Namen
set @query = 'SELECT MASKE, ' + @cols + ' from
(
select MASKE
, NAME
, ''x'' as "isin"
from myTable
) x
pivot
(
max([isin])
for NAME in (' + @cols + ')
) p '
//ausführen des Queries
execute(@query)
Quelle: https://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-qu ...
Ergebnis:
MASKE hose jacke meier mueller schmidt schulze socke
-------------------------------- ---- ----- ----- ------- ------- ------- -----
einkauf NULL x x x x NULL x
fibu NULL NULL NULL NULL NULL x NULL
materialwirtschaft NULL NULL NULL NULL x NULL NULL
produktion NULL NULL x NULL NULL NULL NULL
projekte x NULL NULL NULL NULL NULL NULL
verkauf x x x x NULL NULL NULL
(6 rows affected)