项目部门 金额
主营业务收入 单位1 6000
业务利润 单位1 2000
营业费用 单位1 1000
主营业务收入 单位2 8000
业务利润 单位2 2500
营业费用 单位2 1300
主营业务收入 单位3 5400
业务利润 单位3 900
营业费用 单位3 500
主营业务收入 单位1 6000
业务利润 单位1 2000
营业费用 单位1 1000
主营业务收入 单位2 8000
业务利润 单位2 2500
营业费用 单位2 1300
主营业务收入 单位3 5400
业务利润 单位3 900
营业费用 单位3 500
有这样一个记录集,有三个字段:项目、部门、金额
项目 部门 收入
主营业务收入 单位1 6000
业务利润 单位1 2000
营业费用 单位1 1000
主营业务收入 单位2 8000
业务利润 单位2 2500
营业费用 单位2 1300
主营业务收入 单位3 5400
业务利润 单位3 900
营业费用 单位3 500如果这样在水晶报表中显示,有点不好看,我想如下显示
项目 单位1 单位2 单位3
主营业务收入 6000 8000 5400
业务利润 2000 2500 900
营业费用 1000 1300 500请问应该怎样作。
其中部门数不定,不一定只有3个.
给你几个例子:
--测试如下:
create table ztable(项目 int, 日期 varchar(10),单号 int,品名 varchar(50),数量 int)
insert into ztable select 1,'4-9' ,18, '電板', 1500
insert into ztable select 2,'4-10',8 , '模組', 900
insert into ztable select 3,'4-11',18, '模組', 1500
insert into ztable select 4,'4-14',17, '電板', 1500
declare @sql varchar(8000)set @sql='select 项目,日期,单号'
select @sql = @sql + ',sum(case 品名 when '''+品名+''' then 数量 else 0 end) as '+品名
from (select distinct 品名 from ztable) as a
select @sql = @sql+' from ztable group by 项目,日期,单号'exec(@sql)
drop table ztable-- 结果如下:-- 项目 日期 单号 電板 模組
-- ----------- ---------- ----------- ----------- -----------
-- 1 4-9 18 1500 0
-- 2 4-10 18 0 900
-- 3 4-11 18 0 1500
-- 4 4-14 17 1500 0
declare @ table(department nvarchar(50), goodsname nvarchar(50),quantity int)
insert into @ values('部门M' , '货品A' , '100')
insert into @ values('部门M' , '货品B' , '3000')
insert into @ values('部门N' , '货品C' , '5')
insert into @ values('部门N' , '货品B' , '200')要得到结果:
department 货品A 货品B 货品C
------------- ---------- --------- ---------
部门M 100 3000 0
部门N 0 200 5select * into temp from @
declare @sql varchar(8000)
set @sql = 'select department'
select @sql = @sql + ',sum(case goodsname when '''+goodsname+''' then quantity else 0 end) as '+goodsname
from (select distinct goodsname from temp) as a
select @sql = @sql+' from temp group by department'exec(@sql)drop table temp