2017-11-03 9 views
-2

Mit zwei Tabellen möchte ich einige Zeilen in Spalten konvertieren. Meine Datenbank-Engine ist Microsoft SQL Server. Das Bild unten zeigt mein gewünschtes Ergebnis.Dynamische Spalten - SQL Server 2012

View Image Tables

+4

Es gibt so viele Fragen hier über dynamische schwenkt. Hast du irgendwas von ihnen gesehen? Haben Sie eine der Techniken ausprobiert? Wenn ja, verlinke dich bitte mit dem/den, den/die du dir bereits angeschaut hast und versuche dann, sie zu verwenden und was nicht funktioniert. Dies ist kein "Hier ist eine Spezifikation, bitte schreibe den Code für mich" -Service. –

+0

Suche 'dynamische Pivot' – SQLChao

+0

@configbug FYI gibt es eine spanische Version von Stackoverflow, Sie können Fragen dort drüben stellen. –

Antwort

0

Ihre Frage ist nicht so klar, aber es scheint, dass Sie SQL PIVOT

Beispieldaten

DECLARE @tblModule TABLE(modId INT,name VARCHAR(200)) 
DECLARE @tblProfile TABLE(id INT,modId INT,profil VARCHAR(200)) 

INSERT INTO @tblModule 
SELECT 1,'Manteniminento' UNION 
SELECT 2 , 'Soporte' 

INSERT INTO @tblProfile 
SELECT 1,1,'Administrador' UNION 
SELECT 2,2 , 'Empleado' UNION 
SELECT 3,1 , 'Empleado' UNION 
SELECT 4,1 , 'Empleado' UNION 
SELECT 5,1 , 'Administrador' UNION 
SELECT 6,1 , 'Administrador' 

Haupt Abfrage

SELECT name,SUM([Administrador]) AS Administrador, SUM([Empleado]) AS Empleado 
FROM 
(SELECT id,p.modId,m.name,p.profil 
    FROM @tblProfile p 
    INNER JOIN @tblModule m ON m.modId = p.modId) AS SourceTable 
PIVOT 
( 
COUNT(modId) 
FOR profil IN ([Administrador], [Empleado]) 
) AS PivotTable 
GROUP BY name 
verwenden möchten

Ergebnis

name   Administrador Empleado 
Manteniminento 3    2 
Soporte   0    1