可以把查詢結果改成這樣顯示嗎?

skyfly770 2006-09-21 09:49:05

diffno dsum bno bsum
0001 7 b1 8
0002 8 b2 5
0003 5 b3 6
0004 6 b4 7
0005 10 b5 8
0006 11 b6 10
0007 12 b7 15
0008 13 b8 20
0009 45 b9 12

上面這個查詢怎么改成下面這樣顯示呢>?>??

0001 0002 0003 0004 0005 0006 0007 0008 0009
7 8 5 6 10 11 12 13 45
b1 b2 b3 b4 b5 b6 b7 b8 b9
8 5 6 7 8 10 15 20 12

麻煩各位大哥了。。。急。。。在線等~!

...全文
126 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2006-09-21
  • 打赏
  • 举报
回复
create TABLE addd(diffno varchar(10),dsum int, bno varchar(10),bsum int)
insert addd select '0001', 7 ,'b1', 8
union all select '0002', 8 ,'b2', 5
union all select '0003', 5 ,'b3', 6
union all select '0004', 6 ,'b4', 7
union all select '0005', 10 ,'b5', 8
union all select '0006', 11 ,'b6', 10
union all select '0007', 12 ,'b7', 15
union all select '0008', 13 ,'b8', 20
union all select '0009', 45 ,'b9', 12

declare @s1 varchar(8000)
declare @s2 varchar(8000)
declare @s3 varchar(8000)
set @s1=''
set @s2=''
set @s3=''

select @s1=@s1+' ltrim(sum(case when [diffno]='''+[diffno]+''' then ltrim([dsum]) else 0 end)) ['+[diffno]+'],' from addd
set @s1='select '+left(@s1,len(@s1)-1) +' from addd '

select @s2=@s2+' ltrim(max(case when [diffno]='''+[diffno]+''' then ltrim([bno]) else '' '' end)) ['+[diffno]+'],' from addd
select @s2='select '+left(@s2,len(@s2)-1) +' from addd '

select @s3=@s3+' ltrim(sum(case when [diffno]='''+[diffno]+''' then ltrim([bsum]) else 0 end)) ['+[diffno]+'],' from addd
set @s3='select '+left(@s3,len(@s3)-1) +' from addd '
select @s1+' union all ' +@s2+ ' union all '+@s3
exec(@s1+' union all ' +@s2+ ' union all '+@s3)

22,209

社区成员

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

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