22,207
社区成员
发帖
与我相关
我的任务
分享
declare @cols nvarchar(max),@sql nvarchar(max)
select @cols=isnull(@cols+',','')+'Field'+ltrim(ID) from (select row_number()over(partition by UserID,UserName order by getdate()) as ID from aa ) as a group by ID
set @sql=N'
select * from (
select *,''Field''+ltrim(row_number()over(partition by UserID,UserName order by getdate())) as Field from aa
) as t pivot(max(CityName) for Field in ('+@cols+N')) p'
EXEC(@sql)
+--------+----------+--------+--------+--------+
| UserID | UserName | Field1 | Field2 | Field3 |
+--------+----------+--------+--------+--------+
| 2 | 北京 | b | d | NULL |
| 1 | 上海 | a | e | c |
+--------+----------+--------+--------+--------+
SELECT UserID ,
username ,
MIN(CASE rn
WHEN 1 THEN CityName
ELSE 'zz'
END) field1 ,
MAX(CASE rn
WHEN 2 THEN CityName
ELSE '1'
END) AS fild2 ,
MAX(CASE rn
WHEN 3 THEN CityName
ELSE ''
END) AS fild3
FROM ( SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY username ORDER BY UserID ) AS rn
FROM AA
) AS t
GROUP BY UserID ,
username