SQL 的实例

/*两个表
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.月份

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值