行が正しく動作しているが、問題がNULLである動的列に行をピボットする必要があります。私はZERO(0)を値にしたい。Sql Serverピボットは、NULL値を持つ列に既定の名前の列を使用します
出力のために、この画像を参照してください:
は、以下の表で自分のSQLクエリです:
CREATE TABLE #CourseSales
(Course VARCHAR(50) null,Year INT,Earning MONEY null)
go
--Populate Sample records
INSERT INTO #CourseSales VALUES('.NET',2012,10000)
INSERT INTO #CourseSales VALUES('.NET',2012,5000)
INSERT INTO #CourseSales VALUES('Java',2012,20000)
INSERT INTO #CourseSales VALUES('Java',2013,30000)
INSERT INTO #CourseSales VALUES(null,2013,1200)
INSERT INTO #CourseSales VALUES(null,2012,null)
select * from #CourseSales
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX),
@PivotColumnNames AS NVARCHAR(MAX),
@PivotSelectColumnNames AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @PivotColumnNames= ISNULL(@PivotColumnNames + ',','')+ QUOTENAME(Course)
FROM (SELECT DISTINCT Course FROM #CourseSales) AS Courses
--Get distinct values of the PIVOT Column with isnull
SELECT @PivotSelectColumnNames = ISNULL(@PivotSelectColumnNames + ',','') + 'ISNULL(' + QUOTENAME(Course) + ', 0) AS ' + QUOTENAME(Course)
FROM (SELECT DISTINCT Course FROM #CourseSales) AS Courses
--Prepare the PIVOT query using the dynamic
SET @DynamicPivotQuery =N'SELECT Year, ' + @PivotSelectColumnNames + ' FROM #CourseSales PIVOT(SUM(Earning) FOR Course IN (' + @PivotColumnNames + ')) AS PVTTable'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery
drop table #CourseSales
任意の助けいただければ幸いです。ありがとう。
を試すことができますあなたは稼ぐためにいくつかのソース(コース)を持っているか、空気からしなければなりません...! – Rajan