VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 875|回复: 7

关于汇总显示的问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-10 18:00:01 | 显示全部楼层 |阅读模式
现有数据如下(每一季度的数据明细):
季度 Fitem  数量
1    A      20
2    B      80
3    A      50
4    B      50

想得到的结果如下(单一ITEM的每季的数量):

FITEM 1   2  3    4
A     20     50
B         80     50

谢谢!
回复

使用道具 举报

0

主题

8

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-2 12:00:01 | 显示全部楼层
select ftiem ,
       sum(case when 季度 = 1 then 数量 else null end) as [1],
       sum(case when 季度 = 2 then 数量 else null end) as [2],
       sum(case when 季度 = 3 then 数量 else null end) as [3],
       sum(case when 季度 = 4 then 数量 else null end) as [4]
from tb
group by Fitem
回复

使用道具 举报

0

主题

8

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-2 12:15:02 | 显示全部楼层
select ftiem ,
       sum(case when 季度 = 1 then 数量 else null end) as [1],
       sum(case when 季度 = 2 then 数量 else null end) as [2],
       sum(case when 季度 = 3 then 数量 else null end) as [3],
       sum(case when 季度 = 4 then 数量 else null end) as [4]
from tb
group by Fitem
回复

使用道具 举报

0

主题

126

帖子

73.00

积分

新手上路

Rank: 1

积分
73.00
发表于 2020-6-2 12:45:01 | 显示全部楼层
行转列
回复

使用道具 举报

0

主题

8

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-2 18:15:01 | 显示全部楼层
if object_id('pubs..tb') is not null
   drop table tb
go

create table tb
(
季度  int,
Fitem varchar(10),
数量  int
)

insert into tb(季度,Fitem,数量) values(1,    'A',      20)
insert into tb(季度,Fitem,数量) values(2,    'B',      80)
insert into tb(季度,Fitem,数量) values(3,    'A',      50)
insert into tb(季度,Fitem,数量) values(4,    'B',      50)

select fitem ,
       sum(case when 季度 = 1 then 数量 else null end) as [1],
       sum(case when 季度 = 2 then 数量 else null end) as [2],
       sum(case when 季度 = 3 then 数量 else null end) as [3],
       sum(case when 季度 = 4 then 数量 else null end) as [4]
from tb
group by Fitem

drop table tb

/*result
fitem      1           2           3           4           
---------- ----------- ----------- ----------- -----------
A          20          NULL        50          NULL
B          NULL        80          NULL        50

(所影响的行数为 2 行)
*/
回复

使用道具 举报

0

主题

93

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-6-2 23:15:02 | 显示全部楼层
create table ta(季度 int ,Fitem varchar(2), 数量 int)
insert ta
select 1,    'A' ,     20
union all select 2,    'B' ,     80
union all select 3,    'A' ,     50
union all select 4,    'B' ,     50

declare @sql varchar(1000)
set @sql=''
select @sql=@sql+',['+rtrim(季度)+']=max( case 季度 when '+rtrim(季度)+' then 数量 end)'
from ta group by 季度
set @sql='select Fitem'+@sql+' from ta group by Fitem'
--print @sql
exec(@sql)
Fitem 1           2           3           4           
----- ----------- ----------- ----------- -----------
A     20          NULL        50          NULL
B     NULL        80          NULL        50

回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-6-4 18:00:01 | 显示全部楼层
如果用Crate Table建立一个表,然后Inster INTO 分四次插入要如何写呀
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-6-8 20:00:01 | 显示全部楼层
你可以用Pivot转换函数!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表