2014-09-11 4 views
1

У меня есть одно требование, чтобы написать запрос SQL Server для чтения из одной таблицы, давайте предположим, что таблица называется Table1, структура и строки выглядят следующим образом:SQL запрос, чтобы объединить две строки в одну, как результат

enter image description here

Ключ, если значение столбца RefID имеет значение, например, строка 2 имеет значение RefID 3, оно ссылается на идентификатор другой строки (строка 3), а строка 3 также должна иметь неверный идентификатор RefID, а значение должно Идентификатор первого. Идея состоит в том, что эти два принадлежат одному и тому же объекту, поэтому я хотел бы получить их как одну строку результата.

Я знаю, что могу сделать внутреннее соединение в той же таблице, как это:

select T1.*, T2.* from Table1 T1 inner join Table1 T2 on T1.RefID = T2.ID 
where T1.ID is not null 

Но вещь результат имеет избыточность: результат будет иметь 4 строки и, как я уже говорил, так как строки 2 и строки 3 вместе представляют один объект, я хотел бы получить только 2 строки: один для строки 2 строки 3, а другой для строки 4 строки 5. Как я могу это сделать?

+1

Как вы можете выбрать две строки 2 и 3 в одной строке? какие общие функции вы хотите использовать? Вставьте нужные данные для двух строк данных образца, которые вы разместили, и это объяснит, что вы хотите получить. –

ответ

1

Просто убедитесь, что их идентификаторы упорядочены в ряд:

select T1.*, T2.* from Table1 T1 inner join Table1 T2 on T1.RefID = T2.ID AND T1.ID < T2.ID 
where T1.ID is not null 
+0

Благодарим вас за ответ. Это работает на моем тесте SQL Server. Но я не упомянул, что это БД доступа и, по-видимому, синтаксис немного отличается. Тот же запрос не работает, и он просто выдает окно с просьбой ввести параметр T1 (некоторая ссылка говорит, что Access не разрешает псевдоним для столбца, но я использую псевдоним, и я должен с тех пор, как я присоединяюсь к той же таблице, в таблицы). Вы случайно знаете правильный запрос в Access? – tete

1

, если записи являются избыточными и ID столбец уникален я суммарно aggree с @bulat вам не нужно, где положение они уже устранены , i, этот запрос будет работать для вас.

select * from Table1 a inner join Table1 b ON a.ID=b.RefID and a.ID>b.ID 
Смежные вопросы