【发布时间】:2015-12-29 20:24:46
【问题描述】:
我在使用 pivot 命令时遇到问题 - 我收到以下错误
“无效的列名'2013-03-22'。无效的列名'2013-03-29'。无效的列名'2013-04-05'。无效的列名'Volume'。无效的列名'Week Ending日期'。”
运行此代码时
SELECT *
FROM
(
SELECT [Area],
[Region],
[Channel],
[Controller],
[2013-03-22] AS _dt1,
[2013-03-29] AS _dt2,
[2013-04-05] AS _dt3
FROM [DataTable]
) AS SourceTable
PIVOT
(
SUM ([Volume])
FOR [Week Ending Date] IN ([2013-03-22], [2013-03-29], [2013-04-05])
) AS PivotTable
它似乎符合正确的格式.. 有什么想法吗?
【问题讨论】:
-
您已在子查询中将列重命名为
_dt1、_dt2等,因此列[2013-03-22], [2013-03-29], [2013-04-05]不存在。您需要使用别名的名称或跳过别名。另外,您没有名为Volume或Week Ending Date的列。 -
@bluefeet:谢谢,但是通过旋转来摆脱音量和周列的想法不是吗?
-
是的,您似乎想对其求和,但您的子查询中没有
volume列。如果子查询中不存在该列,则无法对其求和。子查询中的哪一列包含音量值?你能用一些示例数据创建一个 SQL Fiddle 吗?或者甚至编辑您的问题以包含示例数据? -
谢谢@bluefeet..我可以试试这个,但它似乎更像是一个编译错误而不是数据错误..如果我在子查询中包含 [Volume] 和 [Week Ending Date],那些错误走开,但我仍然收到日期列的错误...
-
感谢@bluefeet - 我似乎已经想通了,请参阅下面的回复。非常感谢您的帮助!
标签: sql sql-server tsql pivot