读书人

统计报表有关问题

发布时间: 2012-03-11 18:15:38 作者: rapoo

统计报表问题
数据库-生产表

产品名称 工序名称 产品数量
产品1 工序1 10
产品2 工序1 20
产品3 工序1 30
产品1 工序2 40
产品3 工序2 50
产品4 工序2 60
产品2 工序3 70
产品1 工序3 80
产品3 工序3 90
产品4 工序3 100

语言用ASP, 或者直接建立一个视图 包括以下几列
产品名称-工序1-工序2-工序3-工序4

如何得出以下的报表:
产品名称-工序1-工序2-工序3-工序4
产品1-10- -90- 
产品2-20- -70- 
产品3-30-40-90- 
产品4 -60- -100

[解决办法]
create table t2(a varchar(50),b varchar(50),c int)
insert into t2 select '产品1 ', '工序1 ',10
insert into t2 select '产品2 ', '工序1 ',10
insert into t2 select '产品3 ', '工序1 ',10
insert into t2 select '产品1 ', '工序2 ',10
insert into t2 select '产品2 ', '工序2 ',10
insert into t2 select '产品3 ', '工序2 ',10
insert into t2 select '产品1 ', '工序3 ',10
insert into t2 select '产品2 ', '工序3 ',10
insert into t2 select '产品3 ', '工序3 ',10
insert into t2 select '产品1 ', '工序4 ',10
insert into t2 select '产品2 ', '工序4 ',10
insert into t2 select '产品3 ', '工序4 ',10
insert into t2 select '产品1 ', '工序1 ',10
insert into t2 select '产品4 ', '工序1 ',10


declare @sql varchar(1000)
set @sql= ' '
select @sql=@sql+ ',[ '+cast(e.b as varchar)+ ']=-sum(case when b= ' ' '+cast(e.b as varchar)+ ' ' ' then e.c else 0 end) '
from t2 e group by b
set @sql= 'select e.a '+@sql+ ' from t2 e group by e.a '
exec(@sql)


a 工序1 工序2 工序3 工序4
产品1-20-10-10-10
产品2-10-10-10-10
产品3-10-10-10-10
产品4-10000

[解决办法]
---创建测试数据
Create Table 生产表(产品名称 Varchar(10),工序名称 Varchar(10),产品数量 int)
Insert 生产表 Select '产品1 ', '工序1 ', 10
Union All Select '产品2 ', '工序1 ', 20
Union All Select '产品3 ', '工序1 ', 30
Union All Select '产品1 ', '工序2 ', 40
Union All Select '产品3 ', '工序2 ', 50
Union All Select '产品4 ', '工序2 ', 60
Union All Select '产品2 ', '工序3 ', 70
Union All Select '产品1 ', '工序3 ', 80
Union All Select '产品3 ', '工序3 ', 90
Union All Select '产品4 ', '工序3 ', 100

Select * From 生产表
---查询结果
Declare @sql Varchar(8000)
Set @sql= ' '
Select @sql=@sql+ ',Max(Case 工序名称 When ' ' '+工序名称+ ' ' ' Then ' '- ' '+Cast(产品数量 As Varchar) Else ' '- ' ' End) As [- '+工序名称+ '] '


From 生产表 Group By 工序名称
Exec( 'Select 产品名称 '+@sql+ 'From 生产表 Group By 产品名称 ')
----你给出的数据工序名称没有工序4
/*
产品名称 -工序1 -工序2 -工序3
---------- ------------------------------- ------------------------------- ----------------
产品1 -10 -40 -80
产品2 -20 - -70
产品3 -30 -50 -90
产品4 - -60 -100

读书人网 >SQL Server

热点推荐