Sql server 使用PIVOT命令创建具有动态列的表
我有以下TSQL,我一直在尝试做两件事,但运气不好: 将空值转换为0 输出到可用于 其他行动。 部分结果包含在所附的: 为了将结果捕获到带有动态列的临时表中,并消除空值,我需要做哪些更改? 谢谢 完成了。 对于第一个挑战,在本论坛先前的一篇帖子中使用了@NullToZeroCols示例后,它成功了。对于第二个挑战,我最终选择了一个非临时表,每次执行TSQL命令时都可以搜索并删除该表。我了解到,在执行PIVOT命令后,先前创建的临时表的作用域不允许我使用它。完成。 对于第一个挑战,在本论坛先前的一篇帖子中使用了@NullToZeroCols示例后,它成功了。对于第二个挑战,我最终选择了一个非临时表,每次执行TSQL命令时都可以搜索并删除该表。我了解到,在执行PIVOT命令后,先前创建的临时表的范围不允许我使用它Sql server 使用PIVOT命令创建具有动态列的表,sql-server,pivot,dynamic-columns,output-parameter,Sql Server,Pivot,Dynamic Columns,Output Parameter,我有以下TSQL,我一直在尝试做两件事,但运气不好: 将空值转换为0 输出到可用于 其他行动。 部分结果包含在所附的: 为了将结果捕获到带有动态列的临时表中,并消除空值,我需要做哪些更改? 谢谢 完成了。 对于第一个挑战,在本论坛先前的一篇帖子中使用了@NullToZeroCols示例后,它成功了。对于第二个挑战,我最终选择了一个非临时表,每次执行TSQL命令时都可以搜索并删除该表。我了解到,在执行PIVOT命令后,先前创建的临时表的作用域不允许我使用它。完成。 对于第一个挑战,在本论坛先前的一
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 ('+@cols+')
) as IncomePivot';
EXEC sp_executesql
@stmt = @stmt;