不兼容的透视类型SQL
我得到了一个数据库,需要对其执行透视。我的枢轴运转得很好。但是,我需要在SELECT中执行的列之一是text类型的列。但是,PIVOT命令不能使用此数据类型。我该如何解决这个问题呢?我个人的偏好是将列类型转换为不兼容的透视类型SQL,sql,text,pivot,Sql,Text,Pivot,我得到了一个数据库,需要对其执行透视。我的枢轴运转得很好。但是,我需要在SELECT中执行的列之一是text类型的列。但是,PIVOT命令不能使用此数据类型。我该如何解决这个问题呢?我个人的偏好是将列类型转换为VARCHAR(MAX),然后完成它,TEXT无论如何都在弃用列表中 如果这不是一个选项,您可以在查询中简单地将文本值转换为VARCHAR(MAX)。e、 g CREATE TABLE #T (A TEXT, B CHAR(1), Val INT); INSERT #T (A, B, Va
VARCHAR(MAX)
,然后完成它,TEXT
无论如何都在弃用列表中
如果这不是一个选项,您可以在查询中简单地将文本值转换为VARCHAR(MAX)
。e、 g
CREATE TABLE #T (A TEXT, B CHAR(1), Val INT);
INSERT #T (A, B, Val)
VALUES ('A', '1', 1), ('A', '2', 3), ('A', '3', 2);
SELECT pvt.A, pvt.[1], pvt.[2], pvt.[3]
FROM #T
PIVOT
( SUM(Val)
FOR B IN ([1], [2], [3])
) pvt;
给出了错误:
Msg 488,16级,状态1,第6行
数据透视分组列必须具有可比性。“A”列的类型为“文本”,这是不可比较的
这很好:
SELECT pvt.A, pvt.[1], pvt.[2], pvt.[3]
FROM ( SELECT A = CAST(A AS VARCHAR(MAX)), B, Val
FROM #T
) t
PIVOT
( SUM(Val)
FOR B IN ([1], [2], [3])
) pvt;
这个答案有用吗:
PIVOT
聚合它显示的数据,在文本上禁止聚合。显示您的代码,并解释为什么数据透视表中需要有text
列。一种解决方法是将文本
强制转换为varchar
,但它显然有其性能损失。