我转移包含某些人员记录的姓名和电话号码的数据。我转动的行包含以下问题:姓名,电话,姓名,电话。是的,问题是重复的文本。
我的枢轴功能就像这样
SELECT
pesonnel_id,
Qasked,
Qanswered
FROM
....
pivot (max(QAnswered) for QAsked in ([Name], [Phone], [Name], [Phone])) p
显然,SQL并不喜欢这样......它说[名称]被多次指定为p ....嗯,我该如何解决这个问题?
我确实有一定数量的问题,只有这4个(姓名,电话,姓名,电话),所以我不介意'硬编码'什么东西,只是不知道如何/在哪里。 我使用的是SQL2012。
感谢您的建议。
答案 0 :(得分:1)
您需要某种方法来区分旋转列的值。您可以将ROW_NUMBER()
用于此目的:
SELECT pesonnel_id, [Name1], [Phone1], [Name2], [Phone2]
FROM (
SELECT pesonnel_id,
QAnswered,
QAsked + CAST(ROW_NUMBER() OVER (PARTITION BY pesonnel_id, QAsked ORDER BY QAnswered) AS varchar(50)) AS QAsked
FROM #mytable ) src
PIVOT (MAX(QAnswered) FOR QAsked in ([Name1], [Phone1], [Name2], [Phone2])) p
您也不能在外部查询的QAnswered
子句中使用正在聚合的列,即SELECT
。