请问怎么样生成这样的交叉表?

tanst 2003-04-05 03:01:05
数据库中的表:
id value week
2 P2 1
1 P1 2
1 P1 3
1 P1 4
1 P1 5
1 P1 6
1 P1 7

要生成的表:

week: 1 2 3 4 5 6 7 1 2 3 4 5 6 7
2 1 1 1 1 1 1 P2 P1 P1 P1 P1 P1 P1

怎么在存贮过程中实现呢?
...全文
85 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
newson 2003-04-11
  • 打赏
  • 举报
回复
up
pengdali 2003-04-05
  • 打赏
  • 举报
回复
create table # (id int,value char(2),week int)
insert # values(2,'P2',1)
insert # values(1,'P1', 2)
insert # values(1,'P1', 3)
insert # values(1,'P1', 4)
insert # values(1,'P1', 5)
insert # values(1,'P1', 6)
insert # values(1,'P1', 7)

declare @sql1 varchar(8000),@sql2 varchar(8000)
select @sql1='',@sql2=''
select @sql1=@sql1 + ',sum(case week when '+cast(week as varchar)+' then id else 0 end) i'+cast(week as varchar),
@sql2=@sql2 + ',max(case week when '+cast(week as varchar)+' then value end) v'+cast(week as varchar)
from (select distinct week from #) as a

set @sql1=right(@sql1,len(@sql1)-1)

exec('select '+@sql1+@sql2+' from #')
go



drop table #
tanst 2003-04-05
  • 打赏
  • 举报
回复
再补充一下,目标表应该是这样:
表头: i1 i2 i3 i4 i5 i6 i7 v1 v2 v3 v4 v5 v6 v7
一条记录 2 1 1 1 1 1 1 P2 P1 P1 P1 P1 P1 P1

22,299

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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