透视查询,其中正在透视的数据包含相同的文本

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