枢轴援助

时间:2013-07-03 19:32:15

标签: sql pivot-table

尝试了将多行组合成一行的几种方法,没有运气。我正在使用SQL 2008.过去没有使用过Pivot,所以这有点新鲜。 Pivot功能不起作用或我可能看错了。这是需要组合成一行的当前输出。

+--------------+-------------+----------------+-----------------------------------------+----------------------+
|     Agent_ID | EvalForm_ID | 1.0 Compliance |                Reg_Fail                 | Marketing Guidelines |
+--------------+-------------+----------------+-----------------------------------------+----------------------+
|        16738 |      225777 |                |                                         |                      |
|        16738 |      225777 |                |                                         |                    1 |
|        16738 |      225777 |                |                                   1     |                      |
+--------------+-------------+----------------+-----------------------------------------+----------------------+

期望的输出:

 Agent_ID   EvalForm_ID 1.0 Compliance  Reg_Fail    Marketing Guidelines
   16738        225777                       1      1

这里也是我正在使用的orginial代码...再次,我已经尝试了everthing。如果您能提供帮助,我们将不胜感激。

Select DISTINCT TR.Agent_ID
  ,TR.EvalForm_ID
  ,TR.[1.0 Compliance]
  ,TR.REg_Fail,TR.[Marketing Guidelines]


FROM #TrendResults AS TR

 WHERE TR.EvalForm_ID ='225777'

Group BY TR.Agent_ID,TR.EvalForm_ID,TR.Reg_Fail,TR.[Marketing Guidelines],TR.[1.0     
Compliance]

1 个答案:

答案 0 :(得分:0)

根据您的示例数据和所需结果,您需要应用具有GROUP BY的聚合函数:

Select TR.Agent_ID
  ,TR.EvalForm_ID
  ,Max(TR.[1.0 Compliance]) [1.0 Compliance]
  ,Max(TR.REg_Fail)  REg_Fail
  ,Max(TR.[Marketing Guidelines]) [Marketing Guidelines]
FROM #TrendResults AS TR
WHERE TR.EvalForm_ID ='225777'
GROUP BY TR.Agent_ID, TR.EvalForm_ID;

请参阅SQL Fiddle with Demo