je l'TSQL suivante que j'ai essayé, sans succès, de faire 2 choses avec:Création table avec des colonnes dynamiques à l'aide de la commande PIVOT
- convertir les valeurs NULL à 0
- sortie à une table temporaire Je peux utiliser pour d'autres opérations.
Une partie du résultat est capturé dans le joint:
Quels changements dois-je faire à la fois saisir le résultat dans une table temporaire avec des colonnes dynamiques, et d'éliminer les valeurs nulles? Merci.
DECLARE @cols NVARCHAR(MAX), @stmt NVARCHAR(MAX), @ParmDefinition NVARCHAR(MAX), @PVT3 NVARCHAR(MAX);
--Get distinct values of the PIVOT Column
SELECT @cols = ISNULL(@cols+', ', '')+'['+T.Cat+']'
FROM
(
SELECT TOP 100 CONVERT(VARCHAR(2), IncomeCategoryID) AS Cat
FROM Payroll.lu_IncomeCategory
WHERE IsAllowance <> 0
AND IncomeCategoryID IN
(
SELECT DISTINCT
IncomeCategoryID
FROM Payroll.Income
WHERE IncomeCategoryID <> 0
)
ORDER BY IncomeCategoryID
) AS T;
SELECT @stmt = N'
SELECT *
FROM (SELECT EmployeeID,IncomeCategoryID,
SUM(RateAmount) [Amount]
FROM Payroll.Income
GROUP BY EmployeeID, IncomeCategoryID) as PayData
pivot
(
SUM([Amount])
FOR IncomeCategoryID IN ('[email protected]+')
) as IncomePivot';
EXEC sp_executesql
@stmt = @stmt;