【发布时间】:2012-09-28 17:46:28
【问题描述】:
我意识到这个问题以前曾以多种形式提出过,但我正在努力将我找到的每一个答案都应用到我的特定表格中。开始 - 直接进入细节。
表 A 有四列(唯一 ID、编号、修订版、日期)。执行select * from A时,结果集如下-
ID | Number | Revision | Date
------------------------------------
01 | 12345 | 1 | 01/01/2010
02 | 12345 | 2 | 01/04/2010
03 | 123 | 1 | 01/12/2010
04 | 1234 | 1 | 09/09/2012
05 | 12345 | 3 | 09/12/2012
我希望每个数字在一行中显示每个修订的日期,例如对于数字 12345,查询将返回
ID | Number | Revision | Date | Revision 2 | Revision 2 Date | Revision 3 | Revision 3 Date |
---------------------------------------------------------------------------------------------
01 | 12345 | 1 | 01/01/2010 |2 | 01/04/2010 | 3 | 09/12/2012|
我理解语法类似于
SELECT Revision, Date
FROM (
SELECT NUMBER
FROM A) as B INNER JOIN ON a.Number = B.Number
GROUP BY a.Number
但是这仍然为每个组合返回一行,我只想要上面显示的结果。
如果有任何建议或提示,我将不胜感激!
【问题讨论】:
-
两个表不应该使用相同的冒号
-
Pivot 是您需要将 Revisions 和 Dates 转换为列 msdn.microsoft.com/en-us/library/ms177410(v=sql.105).aspx
标签: sql sql-server sql-server-2005 pivot unpivot