需要有关SQL查询(自连接)的帮助
我有一张这样的桌子需要有关SQL查询(自连接)的帮助,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一张这样的桌子 MAIN ID CONTENT SUB ID ABCD ONE 888 ABCD TWO 888 我希望查询结果是这样的 MAIN ID SUB ID CONTENT1 CONTENT2 ABCD 888 ONE TWO 您可以使用PIVOT功能: select * from ( select [main id], [sub id], [content],
MAIN ID CONTENT SUB ID
ABCD ONE 888
ABCD TWO 888
我希望查询结果是这样的
MAIN ID SUB ID CONTENT1 CONTENT2
ABCD 888 ONE TWO
您可以使用
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 |
演示:更像是一个pivot查询。你可以通过pivot来完成,就像这里:解决我的问题,谢谢!