declare @year varchar(4)
set @year='2005'select
日期=isull(a.日期,b.日期),
采购=isnull(a.金额,0),
出售=isnull(b.金额,0),
差额=isnull(b.金额,0)-isnull(a.金额,0)
from
(select 日期=convert(char(7),日期,120),金额=sum(金额) from 采购表 group by convert(char(7),日期,120)) a
full outer join
(select 日期=convert(char(7),日期,120),金额=sum(金额) from 出售表 group by convert(char(7),日期,120)) b
on
a.日期=b.日期
where
left(isull(a.日期,b.日期),4)=@year
order by
日期
set @year='2005'select
日期=isull(a.日期,b.日期),
采购=isnull(a.金额,0),
出售=isnull(b.金额,0),
差额=isnull(b.金额,0)-isnull(a.金额,0)
from
(select 日期=convert(char(7),日期,120),金额=sum(金额) from 采购表 group by convert(char(7),日期,120)) a
full outer join
(select 日期=convert(char(7),日期,120),金额=sum(金额) from 出售表 group by convert(char(7),日期,120)) b
on
a.日期=b.日期
where
left(isull(a.日期,b.日期),4)=@year
order by
日期
的分别对每个月的采购和出售情况统计! 并计算出每月的差额.
需要结果:
日期: 采购(金额合计) 出售(金额合计) 差额(=出售金额-采购金额)
2005年01月 34 0 -34
2005年02月 35 11 -24
2005年03月 23 23 0
2005年04月 23 12 -11
2005年05月 0 76 76
2005年06月 0 23 23
2005年07月 0 23 23
2005年08月 0 0 0
2005年09月 0 0 0
2005年10月 0 0 0
2005年11月 0 0 0
2005年12月 0 0 0
如果采购金额和出售金额都为0 也显示出来呢?应如何定SQL文?
select identity(int,1,1) as id into #T from sysobjects
set rowcount 0declare @year varchar(4)
set @year='2005'select
日期=isull(a.日期,b.日期),
采购=isnull(a.金额,0),
出售=isnull(b.金额,0),
差额=isnull(b.金额,0)-isnull(a.金额,0)
from
(select (@year+'-'+right('0'+rtrim(id),2)) as 日期 from #T) a
left join
(select 日期=convert(char(7),日期,120),金额=sum(金额) from 采购表 group by convert(char(7),日期,120)) b
on
a.日期=b.日期
left join
(select 日期=convert(char(7),日期,120),金额=sum(金额) from 出售表 group by convert(char(7),日期,120)) c
on
a.日期=c.日期
where
left(isull(a.日期,b.日期),4)=@year
order by
日期
以后还要多多请教呀!:)