-1

尝试了几种将多行组合成单行的方法,但没有成功。我使用的是 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

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

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]
4

1 回答 1

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

于 2013-07-03T19:49:41.353 回答