/*两个表
A表:
名称 进货时间 价格
糖 2008-10-1 12
糖 2008-10-10 12.5
油 2008-11-1 8
B表:
名称 销售时间 价格
油 2008-11-11 8.5
糖 2008-11-10 15
糖 2008-11-15 15.5
我想查询得到某个货物在某段时间内的进货金额和销售价格金额分别是多少?
比如糖在10月份进货的金额是24.5,销售金额是0,在11月份进货的金额是0,销售的金额是30.5。*/
use a
go
create table A(名称 varchar(10) , 进货时间 datetime, 价格 decimal(18,1))
insert into A values('糖', '2008-10-1' , 12 )
insert into A values('糖', '2008-10-10', 12.5)
insert into A values('油', '2008-11-1' , 8)
create table B(名称 varchar(10) , 销售时间 datetime, 价格 decimal(18,1))
insert into B values('油', '2008-11-11' , 8.5 )
insert into B values('糖', '2008-11-10' , 15 )
insert into B values('糖', '2008-11-15' , 15.5)
go
select isnull(m.名称,n.名称) 名称 , isnull(m.月份,n.月份) 月份 , isnull(m.pr , 0) 进货金额 , isnull(n.pr , 0) 销售金额 from
(select 名称 , datepart(mm,进货时间) 月份 , sum(价格) pr from a group by 名称 , datepart(mm,进货时间)) m
full join
(select 名称 , datepart(mm,销售时间) 月份 , sum(价格) pr from b group by 名称 , datepart(mm,销售时间)) n
on m.名称 = n.名称 and m.月份 = n.月份