大侠们入眠了吗?

一缕青烟 2011-08-10 11:42:42


TAB1

Mid
1
2
1
3
1
1
3
4

------------------------------------

TAB2


m1 m2 m3 m4
1 1 1 1
2 null null null
3 3 null null
4 null null null



根据 TAB1 得到 TAB2
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
一缕青烟 2011-08-10
  • 打赏
  • 举报
回复
大侠们辛苦了,明儿赶早结分。困死了。
百年树人 2011-08-10
  • 打赏
  • 举报
回复
select 
m1=max(case when rn%4=1 then mid end),
m2=max(case when rn%4=2 then mid end),
m3=max(case when rn%4=3 then mid end),
m4=max(case when rn%4=0 then mid end)
from
(select rn=row_number() over(order by getdate()),* from tab1) t
group by
(rn-1)/4
AcHerat 元老 2011-08-10
  • 打赏
  • 举报
回复
未测试,睡觉了,改改!
AcHerat 元老 2011-08-10
  • 打赏
  • 举报
回复

select mid,rid=row_number() over (partition by mid order by getdate())
into #tb
from tab1

declare @sql varchar(8000)
select @sql = isnull(@sql+',','')+',max(case rid when '+ltrim(rid)+' then mid else null end) [m'+ltrim(rid)+']'
from #tb
group by rid
order by rid
select @sql = @sql + ' into tab2 from #tb group by rid'
exec(@sql)

select * from tab2

drop table #tb
geniuswjt 2011-08-10
  • 打赏
  • 举报
回复
瞟一眼,睡了

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧