2013-11-26 4 views
2

У меня есть таблица, как этотНужна помощь по SQL запроса (автообъединение)

MAIN ID CONTENT SUB ID 

ABCD ONE  888 

ABCD TWO  888 

, который я хотел бы результат запроса, чтобы быть, как это

MAIN ID SUB ID CONTENT1 CONTENT2 

ABCD 888  ONE   TWO  
+1

Поделитесь запросом – SK2185

+0

Больше похоже на сводный запрос. –

+1

Вы можете сделать это PIVOT, как здесь: http://stackoverflow.com/questions/2542982/pivot-function-in-sql-server-2008 –

ответ

2

Вы можете использовать функцию PIVOT:

select 
    * 
from (
    select 
    [main id], 
    [sub id], 
    [content], 
    'content' + cast(
     row_number() over (partition by [main id],[sub id] order by content) 
    as varchar(5)) as contentIX 
    from 
    table1 
) T 
pivot (max(Content) for contentIX in (content1,content2)) as content 

подзапрос сначала генерирует имя поля для каждого результата для поворота, content1, content2 и т.д., что выглядит следующим образом:

| MAIN ID | SUB ID | CONTENT | CONTENTIX | 
|---------|--------|---------|-----------| 
| ABCD | 888 |  ONE | content1 | 
| ABCD | 888 |  TWO | content2 | 

Затем внешний запрос выполняет стержень над CONTENTIX колонки, чтобы получить конечный результат:

| MAIN ID | SUB ID | CONTENT1 | CONTENT2 | 
|---------|--------|----------|----------| 
| ABCD | 888 |  ONE |  TWO | 

Дем: http://www.sqlfiddle.com/#!6/095bb/11

+0

решить мою проблему, спасибо! – user3034814

Смежные вопросы