【发布时间】:2015-10-19 14:05:12
【问题描述】:
嗨,我对枢轴 ISNULL 有很大的问题,我尝试将许多主题转换为我的代码,但我失败了。这是我的错误代码:
DECLARE @PivotColumnHeaders VARCHAR(MAX);
SET @PivotColumnHeaders='';
SELECT @PivotColumnHeaders =@PivotColumnHeaders + '[' + CONVERT(VARCHAR,Magazyn1) + '],'
FROM
(
Select DISTINCT Pro.SC03002 as Magazyn1
From SC030700 as Pro
) as Topa
SET @PivotColumnHeaders = LEFT(ISNULL(@PivotColumnHeaders,0),LEN(@PivotColumnHeaders)-1)
DECLARE @Column VARCHAR(MAX);
set @Column =SUBSTRING(( select distinct ',IsNull(['+SC03003+'],0) as ['+SC03003+']' from SC030700 for xml path('')),2,8000)
DECLARE @cmd VARCHAR(MAX);
-Msg 8114, Level 16, State 5, Line 284(set @column) 将数据类型 varchar 转换为数值时出错。
SET @cmd='
SELECT Pro.SC03001 , '+@Column+'
FROM
(
Select Pro.SC03001 , Pro.SC03002, Pro.SC03003
From SC030700 as Pro
) AS myProducts
PIVOT (SUM(SC03003) FOR SC03002 IN ('+@PivotColumnHeaders+')) dynamicpivot '
EXECUTE (@cmd)
【问题讨论】:
-
执行时这2个变量的值是什么或者cmd的内容是什么?
-
我如何检查这个?我们没有安装调试器。我只知道如何在 VS 中调试。
-
Meyby 是否存在填充空值的简单提示? :)
-
你的错误是因为你试图做类似
'Hey' + 10的事情。你不能用这种方式连接一个varchar和一个int。你要么需要将10作为一个varchar 或者如果您使用的是 SQL 2012,您可以使用CONCAT('Hey', 10) -
你也在总结
SC03003那么你为什么在你的 @Columns 中使用那个字段.. 你不应该使用 SC03002 来代替
标签: sql-server pivot