我有一张这样的 table
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 |
关于sql - 需要有关 SQL 查询的帮助(自连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20208251/