2013-02-23 183 views
1

我有一個具有以下信息的表格:SQL選擇匹配的行成兩列,每一列都匹配

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 

任何援助將不勝感激。

+0

你嘗試過這麼遠嗎?最簡單的將加入到自己的表... – 2013-02-23 00:49:52

+0

我已經嘗試了連接...但爲了使示例簡單我用ID爲ID,但我使用GUID的ID(而不是int) – JDaniels57 2013-02-23 00:54:34

回答

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 
+0

我有嘗試了連接......但爲了簡化示例,我使用了int作爲ID,但是我使用GUID作爲ID(而不是int) – JDaniels57 2013-02-23 00:57:06

+0

@ JDaniels57。 。 。您仍然可以使用「<」比較GUID,所以這應該仍然有效。這在這裏明確說明(http://msdn.microsoft.com/en-us/library/ms187942(v=sql.100).aspx)。 – 2013-02-23 01:04:37

+0

是的,謝謝大家 – JDaniels57 2013-02-23 01:37:43