Hallo zusammen,
ich habe mir von
http://www.codeproject.com/Articles/...Column-and-Row
die nachfolgende Abfrage umgeschrieben. Dies Funtioniert.
Wenn ich aber in der Spalte 2(=Sektion) den Wert 2 auch in der dritten Zeile eingebe, bekomme ich die Meldung:"Meldung 8156, Ebene 16, Status 1, Zeile 13
Die '4'-Spalte wurde für 'B' mehrmals angegeben."
Andereseits funktioniert aber:
INSERT INTO tbl_Test
VALUES
('A', 1, 5.55),
('B', 2, 15.45),
('C', 2, 5),
('C', 4, 5),
('A', 5, 0.45);
GO
SELECT [1],[2] FROM (SELECT Team,Sektion,Anzahl FROM tbl_Test) as s
Pivot(Sum (Anzahl) FOR Sektion IN([1],[2]) ) as p
Kann mich jemand aufklären oder sagen,was ich ändern muss
Danke
ich habe mir von
http://www.codeproject.com/Articles/...Column-and-Row
die nachfolgende Abfrage umgeschrieben. Dies Funtioniert.
Wenn ich aber in der Spalte 2(=Sektion) den Wert 2 auch in der dritten Zeile eingebe, bekomme ich die Meldung:"Meldung 8156, Ebene 16, Status 1, Zeile 13
Die '4'-Spalte wurde für 'B' mehrmals angegeben."
Andereseits funktioniert aber:
Code:
VALUES
('A', 1, 5.55),
('B', 2, 15.45),
('C', 2, 5),
('C', 4, 5),
('A', 5, 0.45);
GO
SELECT [1],[2] FROM (SELECT Team,Sektion,Anzahl FROM tbl_Test) as s
Pivot(Sum (Anzahl) FOR Sektion IN([1],[2]) ) as p
Kann mich jemand aufklären oder sagen,was ich ändern muss
Danke
Code:
USE Tester GO CREATE Table tbl_Test ( Team VARCHAR(20), Sektion float, Anzahl float ) INSERT INTO tbl_Test VALUES ('A', 1, 5.55), ('B', 2, 15.45), ('C', 3, 5), ('C', 4, 5), ('A', 5, 0.45); GO /* COLUMNS HEADERS */ DECLARE @columnHeaders NVARCHAR (MAX) SELECT @columnHeaders = COALESCE (@columnHeaders + ',[' +CAST (Sektion AS VARCHAR)+ ']', '[' + CAST (Sektion AS VARCHAR) + ']') FROM tbl_Test ORDER BY Sektion /* GRAND TOTAL COLUMN */ DECLARE @GrandTotalCol NVARCHAR (MAX) SELECT @GrandTotalCol = COALESCE (@GrandTotalCol + 'ISNULL ([' + CAST (Sektion AS VARCHAR) +'],0) + ', 'ISNULL([' + CAST(Sektion AS VARCHAR)+ '],0) + ') FROM tbl_Test ORDER BY Sektion SET @GrandTotalCol = LEFT (@GrandTotalCol, LEN (@GrandTotalCol)-1) /* GRAND TOTAL ROW */ DECLARE @GrandTotalRow NVARCHAR(MAX) SELECT @GrandTotalRow = COALESCE(@GrandTotalRow + ',ISNULL(SUM([' + CAST(Sektion AS VARCHAR)+']),0)', 'ISNULL(SUM([' + CAST(Sektion AS VARCHAR)+']),0)') FROM tbl_Test ORDER BY Sektion /* MAIN QUERY */ DECLARE @FinalQuery NVARCHAR (MAX) SET @FinalQuery = 'SELECT *, ('+ @GrandTotalCol + ')AS [Total_Row] INTO #temp_MatchesTotal FROM (SELECT Team ,CAST(Sektion as VARCHAR) as Sektion ,anzahl FROM tbl_Test ) A PIVOT ( SUM(anzahl) FOR Sektion IN ('+@columnHeaders +') ) B ORDER BY Team SELECT * FROM #temp_MatchesTotal UNION ALL SELECT ''Total_Col'','+@GrandTotalRow +',ISNULL (SUM([Total_ROW]),0) FROM #temp_MatchesTotal DROP TABLE #temp_MatchesTotal' EXECUTE(@FinalQuery) Drop TABLE tbl_Test