2013-02-23 1 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

Что вы пробовали до сих пор? Самое простое - присоединить таблицу к себе ... –

+0

Я пробовал присоединиться ... но чтобы сделать простой пример, я использовал int для ID, но я использую GUID для ID (а не int) – JDaniels57

ответ

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 для идентификаторов (а не int) – JDaniels57

+0

@ JDaniels57. , , Вы все еще можете сравнить GUID с помощью «<», поэтому это должно работать. Это явно указано здесь (http://msdn.microsoft.com/en-us/library/ms187942(v=sql.100).aspx). –

+0

Да, это сработало спасибо всем – JDaniels57