如何解决“无法将数据透视表键值全部转换为数据透视表键列的数据类型”错误

时间:2015-04-24 15:26:11

标签: sql-server ssis ssis-2012

我正在尝试调整一些看起来像这样的数据:

DATETIME  TAGNAME VALUE
1/12/15   All     215
1/12/15   key1     32
1/12/15   key2     28
1/12/15   key3     34
1/12/15   key4     45
1/12/15   key5     18
1/12/15   key6     38

对于看起来像这样的数据:

DATETIME  key1   key2   key3   key4  key5   key6  all
1/12/15     32      28     34     45    18     38  215

当我使用标记名称的数据透视表进行此数据透视操作,将键设置为日期时间和数据透视值作为值时,我收到错误“无法将数据透视表键值全部转换为数据透视表键列的数据类型”。我不知道为什么。我创建并重新创建了pivot转换,并在第一个输出列上获取该错误,无论它是什么。

作为参考,这里的数据类型是DateTime的DateTime,Tagname的String和Value的float。

我很难过。救命啊!

2 个答案:

答案 0 :(得分:1)

以下是如何执行此操作的方法:

--create table 
CREATE TABLE test_table1(
DATE_TIME datetime,
TagName varchar(10),
Value float
);

--insert sample values
INSERT INTO test_table1(DATE_TIME,TagName,Value) VALUES ('1/12/15','All',215)
INSERT INTO test_table1(DATE_TIME,TagName,Value) VALUES ('1/12/15','key1',32)
INSERT INTO test_table1(DATE_TIME,TagName,Value) VALUES ('1/12/15','key2',28)
INSERT INTO test_table1(DATE_TIME,TagName,Value) VALUES ('1/12/15','key3',34)
INSERT INTO test_table1(DATE_TIME,TagName,Value) VALUES ('1/12/15','key4',45)
INSERT INTO test_table1(DATE_TIME,TagName,Value) VALUES ('1/12/15','key5',18)
INSERT INTO test_table1(DATE_TIME,TagName,Value) VALUES ('1/12/15','key6',38)


--use pivot function to pivot the data as needed
SELECT *
FROM (select convert(varchar(8),DATE_TIME,101) as [DateTime],  --converting to date format
             TagName,
             [Value] 
from test_table1
) s
PIVOT
(
  SUM(Value)
  FOR [TagName] IN ([key1],[key2],[key3],[key4],[key5],[key6],[All])
) as pvttable

SQL Fiddle Pivot Example

我会在您的查询中使用pivot函数,而不必在SSIS中使用pivot变换。希望这有帮助!

答案 1 :(得分:1)

我现在无法使用任何图片共享网站。相反,我发布这个作为答案。这是您的枢轴转换设置的方式吗?

Pivot Transformation Example

<强>更新

它对我来说很好。见下文:

Pivot Table Result