Le pivot Pivot Server dans des colonnes avec des valeurs NULL en tant que colonne avec le nom par défaut

Je veux Pivoter des lignes dans les colonnes dynamics qui fonctionne bien mais le problème est valeurs NULL dans les lignes ne sont pas transformées en colonnes avec un nom par défaut et au lieu de NULL je veux ZERO (0) en valeur.

Veuillez vous référer à cette image pour la sortie:

:

Voici ma requête sql avec table:

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 

Toute aide serait appréciée. Merci.

Tu peux essayer ça

 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 ISNULL(Course,'ZAny') AS 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 ISNULL(Course,'ZAny') AS Course FROM #CourseSales) AS Courses --Prepare the PIVOT query using the dynamic SET @DynamicPivotQuery =N'SELECT Year, ' + @PivotSelectColumnNames + ' FROM (SELECT ISNULL(Course,''ZAny'') AS Course,Year,Earning FROM #CourseSales) #CourseSales PIVOT(SUM(Earning) FOR Course IN (' + @PivotColumnNames + ')) AS PVTTable' --Execute the Dynamic Pivot Query EXEC sp_executesql @DynamicPivotQuery