【发布时间】:2017-05-18 14:33:30
【问题描述】:
我在 SQL Server 中有一个如下表(约 50m 行):
PId CustomColumnName CustomColumnValue
1 PropertyA 1
1 PropertyB B
1 PropertyC C
2 PropertyA 1.5
2 PropertyB BB
2 PropertyC CC
3 PropertyD D1
3 PropertyA 2.0
我想PIVOT 那张桌子看起来像这样:
PId PropertyA PropertyB PropertyC PropertyD
1 1 B C NULL
2 1.5 BB CC NULL
3 2.0 NULL NULL D1
我知道 SQL Server 有PIVOT 函数,所以我写了这样的东西:
SELECT *
FROM
(
SELECT [PId], [CustomColumnName], [CustomColumnValue]
FROM [myTable]
) AS src
PIVOT
(
MAX([CustomColumnValue]) -- Not sure how to aggregate VARCHAR data here
FOR [CustomColumnName] IN ('PropertyA', 'PropertyB', 'PropertyC', 'PropertyD')
) AS pvt
但我收到了Incorrect syntax near 'PropertyA' 错误。我不确定我想要做的事情是否可以使用 SQL Server 的PIVOT 函数(因为我认为我不能聚合[CustomColumnValue],它是VARCHAR 类型)。 如果在我的用例中使用 PIVOT 不可行,是否有一种有效的替代方法来实现我想要做的事情?
非常感谢您的建议/回答!
【问题讨论】:
-
从列名
PropertyA等周围取出单引号
标签: sql-server pivot pivot-table