2017-04-19 30 views
2

我正在使用以下SQL脚本在执行时取消转移数据我收到此错误:UNPIVOT运算符中与UNPIVOT参数中的现有列名称冲突中指定。Unpivot来自特定表的多列

SELECT 
     HelpDeskName 
     , TRY_CONVERT(NUMERIC(10,4),loggedInAgents) AS loggedInAgents 
     , TRY_CONVERT(NUMERIC(10,4),AvailableAgents) AS AvailableAgents 
     , TRY_CONVERT(NUMERIC(10,4),UnAvailableAgent) AS UnAvailableAgent 
     , TRY_CONVERT(NUMERIC(10,4),TotalCalls) AS TotalCalls 
     , TRY_CONVERT(NUMERIC(10,4),CallsHandled) AS CallsHandled 
     , ReceivedTime 
    FROM [Final].[UCCX] AS U 
    UNPIVOT 
     (

      HelpDeskName, 
      ReceivedTime 
      for Category in (LoggedInAgents,AvailableAgents,UnAvailableAgent,TotalCalls,CallsHandled) 
     ) Z ; 

来自unpivot的输出列我想看到的是HelpDeskName,ReceivedTime,Category,CategoryValue。请告知或帮助此查询。

enter image description here

enter image description here

+1

你能提供的样本数据和预期的效果?你想要一个'unpivot'或'pivot'吗? –

+0

我添加了两个图像。 – Justin

回答

4

两个快速选项

选择1 - 通过跨应用

跨应用的方法提供了更多的自由/灵活性。例如,您可以轻松地重命名类别或重新设置值。

Select A.HelpDeskName 
     ,A.RecievedTime 
     ,B.* 
From YourTable A 
Cross Apply (values ('LoggedInAgents' ,A.LoggedInAgents) 
        ,('AvailableAgents' ,A.AvailableAgents) 
        ,('UnavailableAgents',A.UnavailableAgents) 
        ,('TotalCalls'  ,A.TotalCalls) 
        ,('CallsHandled'  ,A.CallsHandled) 
      ) B (Category,CategoryValue) 

选项2 - 通过逆透视

Select HelpDeskName,RecievedTime,Category,CategoryValue 
From YourTable 
UnPivot (CategoryValue For Category in (LoggedInAgents,AvailableAgents,UnavailableAgents,TotalCalls,CallsHandled)) u; 

双方将返回类似这样

enter image description here

+0

谢谢,它工作得很好。 – Justin

+0

@Justin快乐它帮助 –