数据透视表,其中正在旋转的数据包含相同的文本

时间:2015-03-05 21:44:51

标签: sql sql-server-2012 pivot

我转移包含某些人员记录的姓名和电话号码的数据。我转动的行包含以下问题:姓名,电话,姓名,电话。是的,问题是重复的文本。

我的枢轴功能就像这样

SELECT 
        pesonnel_id,
        Qasked,
        Qanswered
FROM
       ....
pivot (max(QAnswered) for QAsked in ([Name], [Phone], [Name], [Phone])) p

显然,SQL并不喜欢这样......它说[名称]被多次指定为p ....嗯,我该如何解决这个问题?

我确实有一定数量的问题,只有这4个(姓名,电话,姓名,电话),所以我不介意'硬编码'什么东西,只是不知道如何/在哪里。 我使用的是SQL2012。

感谢您的建议。

1 个答案:

答案 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