第二题:create table owner (xm varchar(20),bh int,xsrq datetime)
create table [money] (fzbh varchar(30),kxmc varchar(30),fs varchar(30),je money ,dtime datetime)
insert into owner
select '张三','1','2004-1-1' union all
select '李四','2','2004-2-1' union all
select '王五','3','2004-3-1'
insert into [money]
select '1','轿车','现金',10000,'2004-1-1' union all
select '1','卡车','现金',20000,'2004-2-1' union all
select '2','货车','按揭',30000,'2004-3-1' union all
select '2','货车','欠款',40000,'2004-4-1' union all
select '3','火车','现金',50000,'2004-5-1' union all
select '3','飞机','按揭',60000,'2004-6-1' union all
select '3','卡车','欠款',70000,'2004-7-1'goselect xm=(case when grouping(a.xm)=1 then '合计' else a.xm end) ,
fzbh=(case when grouping( b.fzbh)=1 then 'NULL' else b.fzbh end),
轿车=sum(case when b.kxmc='轿车' then b.je else 0 end),
卡车=sum(case when b.kxmc='卡车' then b.je else 0 end),
货车=sum(case when b.kxmc='货车' then b.je else 0 end),
火车=sum(case when b.kxmc='火车' then b.je else 0 end),
飞机=sum(case when b.kxmc='飞机' then b.je else 0 end),
现金=sum(case when b.fs='现金' then b.je else 0 end),
按揭=sum(case when b.fs='按揭' then b.je else 0 end),
欠款=sum(case when b.fs='欠款' then b.je else 0 end)
from owner a join [money] b
on a.bh=b.fzbh
where b.dtime between '2004-01-01' and '2004-04-01'
group by a.xm,b.fzbh with rollup
having grouping(a.xm)=grouping(b.fzbh)
order by b.fzbh
张三 1 10000.0000 20000.0000 .0000 .0000 .0000 30000.0000 .0000 .0000
李四 2 .0000 .0000 70000.0000 .0000 .0000 .0000 30000.0000 40000.0000
合计 NULL 10000.0000 20000.0000 70000.0000 .0000 .0000 30000.0000 30000.0000 40000.0000