34,590
社区成员
发帖
与我相关
我的任务
分享
;with t as
(
select result, (row_number() over(order by getdate())-1)/3 'rn'
from kt
)
select [1] 'a',[2] 'b',[3] 'c'
FROM
(
select result,rn,row_number() over(PARTITION BY rn order by rn) 'rn2' --这里可以直接用partition by
from t
) a
PIVOT
(
max(result) for rn2 in([1],[2],[3])
) b
create table kt(result int)
insert into kt
select 1 union all
select 2 union all
select 3 union all
select 4 union all
select 5 union all
select 6 union all
select 7 union all
select 8 union all
select 9 union all
select 10
with t as
(select result,
(row_number() over(order by getdate())-1)/3 'rn'
from kt
)
select [1] 'a',[2] 'b',[3] 'c'
from
(select result,rn,row_number() over(order by getdate())-3*rn 'rn2'
from t) a
pivot(max(result) for rn2 in([1],[2],[3])) p
/*
a b c
----------- ----------- -----------
1 2 3
4 5 6
7 8 9
10 NULL NULL
(4 row(s) affected)
*/
create table kt(result int)
insert into kt
select -1 union all
select -1 union all
select -1 union all
select 1 union all
select -1 union all
select 1 union all
select -1 union all
select -1 union all
select -1
with t as
(select result,
(row_number() over(order by getdate())-1)/3 'rn'
from kt
)
select [1] 'a',[2] 'b',[3] 'c'
from
(select result,rn,row_number() over(order by getdate())-3*rn 'rn2'
from t) a
pivot(max(result) for rn2 in([1],[2],[3])) p
/*
a b c
----------- ----------- -----------
-1 -1 -1
1 -1 1
-1 -1 -1
(3 row(s) affected)
*/
select 1 result
into #t
union all select 2
union all select 3
union all select 4
union all select 5
union all select 6
union all select 7
union all select 8
union all select 9
union all select 10
select c1=max( case when result%3=1 then result else null end )
,c2=max( case when result%3=2 then result else null end )
,c3=max( case when result%3=0 then result else null end )
from #t
group by (result-1)/3