Вы можете использовать функцию 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
Поделитесь запросом – SK2185
Больше похоже на сводный запрос. –
Вы можете сделать это PIVOT, как здесь: http://stackoverflow.com/questions/2542982/pivot-function-in-sql-server-2008 –