如何解决SQL Server动态数据透视表存在数据类型问题
SQL Server动态数据透视查询的数据类型问题。
更新:现在,通过对nvarchar(MAX)
和@cols
使用数据类型@query
,代码现在可以正常工作。感谢您提供的信息。
我正在尝试创建一个SQL Server动态数据透视查询,因此无需在查询语句中显式命名所有列(数据透视表中将有323列,并且这些列可能会不时更改)。
我已经在Stack Overflow的另一个示例中构建了数据透视尝试,但是我显然在处理数据类型时遇到了麻烦。我不确定如何解决该问题,因此,如果您能提供解决方案的帮助,不胜感激。
对于背景,要透视的源表MyTable
包含在下面的屏幕快照(左侧)中看到的列和数据类型。下图(右侧)显示了该表的“ select *”查询结果的示例。
此处显示了我用来创建动态数据透视表的SQL查询代码(已更正):
DECLARE @cols AS nvarchar(255),@query AS nvarchar(255);
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.attKey)
FROM MyTable c
FOR XML PATH(''),TYPE).value('.','varchar(255)'),1,'')
set @query = 'SELECT landingId,' + @cols + ' from
(
select landingId,attValue,attKey
from MyTable
) x
pivot
(
max(attValue)
for attKey in (' + @cols + ')
) p '
execute(@query)
我在执行时从SSMS收到此错误:
信息8114,第16级,状态5,第5行
将数据类型varchar转换为实数时出错。
有什么想法吗?提前致谢。 BT
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。