透视查询,其中正在透视的数据包含相同的文本
pivot query where data which is being pivoted contains same text
我正在旋转数据,其中包含某些人记录的姓名和 phone 号码。我正在旋转的行包含以下问题:姓名,phone,姓名,phone。是的,问题是相同的重复文本。
我的枢轴函数是这样的
SELECT
pesonnel_id,
Qasked,
Qanswered
FROM
....
pivot (max(QAnswered) for QAsked in ([Name], [Phone], [Name], [Phone])) p
显然,SQL 不喜欢这样....它说 [Name] 被多次指定为 p....嗯,我该如何解决这个问题?
我确实有一定数量的问题,只有这 4 个(名字,phone,名字,phone),所以我不介意 'hardcoding' 的东西中,就是不知道how/where。
我正在使用 SQL2012.
感谢您的建议。
您需要一些方法来区分旋转列的值。为此,您可以使用 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
您也不能在外部查询的 SELECT
子句中使用正在聚合的列,即 QAnswered
。
我正在旋转数据,其中包含某些人记录的姓名和 phone 号码。我正在旋转的行包含以下问题:姓名,phone,姓名,phone。是的,问题是相同的重复文本。
我的枢轴函数是这样的
SELECT
pesonnel_id,
Qasked,
Qanswered
FROM
....
pivot (max(QAnswered) for QAsked in ([Name], [Phone], [Name], [Phone])) p
显然,SQL 不喜欢这样....它说 [Name] 被多次指定为 p....嗯,我该如何解决这个问题?
我确实有一定数量的问题,只有这 4 个(名字,phone,名字,phone),所以我不介意 'hardcoding' 的东西中,就是不知道how/where。 我正在使用 SQL2012.
感谢您的建议。
您需要一些方法来区分旋转列的值。为此,您可以使用 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
您也不能在外部查询的 SELECT
子句中使用正在聚合的列,即 QAnswered
。