如何将纵向表转成横向表,请高手帮帮忙!!!!

HskyGet 2005-08-25 07:57:58
库号 类别 数量
1 1 20
1 2 10
2 1 12
2 2 13
查询结果:

类别 库号 数量 库号 数量
1 1 20 2 12
2 1 10 2 13
请问如何查询啊,请各位高手帮忙解答一下,谢谢了!!!
...全文
160 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zlp321002 2005-08-25
--删除环境
drop table TT
回复
zlp321002 2005-08-25
--测试环境
create table TT (库号 int ,类别 int ,数量 int)
insert into TT select 1,1,20
union all select 1,2,10
union all select 2,1,12
union all select 2,2,13
--动态SQL
declare @s varchar(8000)
set @s='select 类别 '
select @s=@s+',[库号]=sum(case when 库号='''+convert(varchar(10),库号)+''' and 类别=a.类别 then 库号 else 0 end),
[数量]=sum(case when 库号='''+convert(varchar(10),库号)+''' and 类别=a.类别 then 数量 else 0 end)'
from TT
group by 库号
set @s=@s+' from TT a group by 类别 '
exec(@s)
--结果
类别 库号 数量 库号 数量
----------- ----------- ----------- ----------- -----------
1 1 20 2 12
2 1 10 2 13

回复
HskyGet 2005-08-25
类别 库号 数量 库号 数量 . . .
1 1 20 2 12
2 1 10 2 13
. . . . .
. . . . .
回复
HskyGet 2005-08-25
库号 类别 数量
1 1 20
1 2 10
2 1 12
2 2 13
. . .
. . .
. . .
查询结果:

类别 库号 数量 库号 数量
1 1 20 2 12
2 1 10 2 13
. . . . .
. . . . .
是动态的
回复
小李木耳 2005-08-25
按照下面的逻辑:
select y.部门,
      sum(y.年月1) as 200505,sum(y.年月2) as 200504,
      sum(y.年月3) as 200503,sum(y.年月4) as 200502
       from
        (
   select x.部门,
     decode(x.年月,'200505',x.num ) as 年月1,decode(x.年月,'200504',x.num ) as 年月2,
decode(x.年月,'200503',x.num ) as 年月3,decode(x.年月,'200502',x.num ) as 年月4
from (selecta.部门,a.年月 ,count(values) num
from 表 a
group by a.部门,a.年月
      ) x
        ) y
        group by y.部门
回复
rivery 2005-08-25
--如果每个类别只有两个库号。
declare @a table(a int,b int,c int)
insert into @a
select 1,1,20 union
select 1,2,10 union
select 2,1,12 union
select 2,2,13

select b,min(a),(select c from @a where b=a.b and a=min(a.a)),max(a),(select c from @a where b=a.b and a=max(a.a))
from @a a
group by b
/*
结果
-----------------------------------------
1 1 20 2 12
2 1 10 2 13

*/
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2005-08-25 07:57
社区公告
暂无公告