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:
Code:

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
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