T-SQL组进入列

如何将(未知)行数分组到一行中,设置列确定分组?

例如,转移

Ref      Name            Link
==============================
1        John            L1
1        John            L2
1        John            L8
2        Steve           L1
2        Steve           L234

Ref      Name            ...    ...    ...
==========================================
1        John            L1     L2     L8
2        Steve           L1     L234   NULL

谢谢你的帮助

解决方法

您可以使用row_number()作为列名来源来转动表:
select *
from
(
  select ref,name,link,row_number() over (partition by ref,name order by link) rn
  from table1
) s
pivot (min (link) for rn in ([1],[2],[3],[4])) pvt

如果您有更多行,只需扩展数字列表即可.

Live test is @ Sql Fiddle.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...