SQL为每个匹配选择匹配的行为两列一行

时间:2013-02-23 00:45:06

标签: sql sql-server-2008

我有一张表格,其中包含以下信息:

MatchID DataID Data 
1       100    info1 
1       101    info2 
2       102    info3 
2       103    info4 
2       104    info5 
3       105    info6 
3       106    info7 
3       107    info8 
3       108    info9

我需要将结果放在两列中,每个匹配的ID都有一行,如下所示:

MatchID DataID1   Data1   DataID2    Data2
   1      100     info1    101       info2
   2      102     info3    103       info4
   2      102     info3    104       info5
   2      103     info4    104       info5
   3      105     info6    106       info7
   3      105     info6    107       info8
   3      105     info6    108       info9
   3      106     info7    107       info8
   3      106     info7    108       info9
   3      107     info8    108       info9

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

您可以使用加入来执行此操作:

select t1.matchid, t1.dataid, t1.data, t2.dataid, t2.data
from t t1 join
     t t2
     on t1.matchid = t2.matchid and
        t1.dataid < t2.dataid