我正在尝试调整一些看起来像这样的数据:
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。
我很难过。救命啊!
答案 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
我会在您的查询中使用pivot函数,而不必在SSIS中使用pivot变换。希望这有帮助!
答案 1 :(得分:1)
我现在无法使用任何图片共享网站。相反,我发布这个作为答案。这是您的枢轴转换设置的方式吗?
<强>更新强>
它对我来说很好。见下文: