2
我有这样需要帮助的SQL查询(自联接)
MAIN ID CONTENT SUB ID
ABCD ONE 888
ABCD TWO 888
一个表,我想查询的结果是这样的
MAIN ID SUB ID CONTENT1 CONTENT2
ABCD 888 ONE TWO
我有这样需要帮助的SQL查询(自联接)
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 |
解决我的问题,谢谢! – user3034814
共享查询 – SK2185
更像是一个数据透视查询。 –
您可以通过像这样的PIVOT: http://stackoverflow.com/questions/2542982/pivot-function-in-sql-server-2008 –