2013-11-26 37 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 

子查询第一生成用于每个结果枢转的字段名,content1content2,等等,看起来像这样:

| 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