2017-06-05 6 views
0

Ich habe folgende Tabelle:Ausgewählte Zeile Spalte

MyTable

aber muß folgendes Ergebnis wählen, auch Hinweis sein, dass Gegenstände nicht behoben werden !!

Result

+0

Alles, was Sie brauchen, ist ein [Pivot] (https: // www. codeproject.com/Tips/500811/Simple-Way-To-Use-Pivot-In-SQL-Query) – PacoDePaco

Antwort

0

Eine Lösung, weiterhin N:

select distinct f1.parentfk, f2.Quantity , f3.Quantity, f4.Quantity, f5.Quantity 
from mytable f1 
left outer join mytable f2 on f1.parentfk=f2.parentfk and f2.itemfk=1 
left outer join mytable f3 on f1.parentfk=f3.parentfk and f3.itemfk=2 
left outer join mytable f4 on f1.parentfk=f4.parentfk and f4.itemfk=3 
left outer join mytable f5 on f1.parentfk=f5.parentfk and f5.itemfk=4 

Oder versuchen, diese dynamische Abfrage:

DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX); 

SET @columns = N''; 

SELECT @columns += N', p.' + QUOTENAME(itemfk) FROM (SELECT distinct f2.itemfk FROM Mytable f2) AS x; 

SET @sql = N' 
SELECT j.ParentFk, ' + STUFF(@columns, 1, 2, '') + ' 
FROM 
(
    SELECT ParentFk, Quantity, itemfk FROM Mytable 
) AS j 
PIVOT 
(
    Sum(Quantity) FOR itemfk IN (' 
    + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') 
    + ') 
) AS p;'; 

PRINT @sql; 

EXEC sp_executesql @sql; 
+0

aber es ist nicht angegeben, wie viele N-Spalte es wäre ?? !! und 1,2,3,4 nicht behoben !! – MahdiIBM

+0

Nein, aber Sie können eine große Anzahl von Abfragen verwenden. Wenn Sie die Pivot-Anweisung verwenden, müssen Sie eine Spalte angeben. Dann, außer wenn Sie eine dynamische Abfrage erstellen (in Speicherprozedur von Beispiel), habe ich keine bessere Lösung !! ?? Kann andere Person gefunden werden – Esperento57

+0

ein Beispiel für dynamische Abfrage https://www.mssqltips.com/sqlservertip/2783/script-to-create-dynamic-pivot-queries-in-sql-server/ – Esperento57

Verwandte Themen