22,294
社区成员
发帖
与我相关
我的任务
分享
declare @sql varchar(max)
select @sql =isnull(@sql + '],[' , '') + a2 from #a group by a2
set @sql = '[' + @sql + ']'
exec ('select * from (select * from #a ) a pivot (max(Losttime) for a2 in (' + @sql + ')) b')
按c2排序
a1 a2 c1 c2
CO OP20 93 103
Q OP20 10 103
Q OP60 90 90
DT OP50 70 70
CO OP70 21 30
DT OP70 9 30
DT OP40 14 14
之后再行转列,但转后顺序重新排过了!他按op20,op30,op40......
a1 op20 op40 op50 op60 op70
CO 93 NULL NULL NULL 21
DT NULL 14 70 NULL 9
Q 10 NULL NULL 90 NULL
结果顺序
a1 op20 OP60 op50 OP70 OP40
declare @sql varchar(max)
;WITH C
AS
(SELECT ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS ID,[a2] FROM #a
)
select @sql =isnull(@sql + '],[' , '') + a2 FROM c AS a WHERE NOT EXISTS(SELECT 1 FROM c WHERE a2=a.a2 AND ID<a.ID)
PRINT @sql
set @sql = '[' + @sql + ']'
exec ('select * from (select * from #a ) a pivot (max(Losttime) for a2 in (' + @sql + ')) b')
declare @sql varchar(max)
select @sql =isnull(@sql + '],[' , '') + a2 from #a group by a2
order by min(c2)--按c2排序
set @sql = '[' + @sql + ']'
exec ('select * from (select * from #a ) a pivot (max(Losttime) for a2 in (' + @sql + ')) b')
declare @sql varchar(max)
select @sql =isnull(@sql + '],[' , '') + a2 from #a group by a2
order by a2
set @sql = '[' + @sql + ']'
exec ('select * from (select * from #a ) a pivot (max(Losttime) for a2 in (' + @sql + ')) b')