查找最新报价----谈group by的简单用法

本文介绍了一种从数据库中选取最新物料成本的方法。通过使用SQL查询,首先确定每个供应商提供的物料及其对应的最新有效日期,然后结合这些信息获取最新的物料成本数据。

今天要写一物料成本的报表。

  背景:系统中一个物料可能对应多个供应商 itemvend(rank),一个物料也可能对应多个报价itemvendprice

很自然想到 :

根据生效日期按降序排列,取top 1

select top 1f.item,f.vend_num,f.effect_date ,f.brk_cost##1

from itemVendPrice f,itemVend g where f.item=g.item and f.Vend_Num=g.Vend_Num and g.rank=1) b

order by f.effect_date desc

可是不能取得所有物料的报价

想到用max函数

select b.item,b.vend_num,max(b.effect_date) as effect_date, b.brk_cost##1from

(select f.item,f.vend_num,f.effect_date

from itemVendPrice f,itemVend g where f.item=g.item and f.Vend_Num=g.Vend_Num and g.rank=1) b

group by b.item,b.vend_num

语法错误--单价成本不同

故先不去单价成本,最后关联之

select c.item,c.vend_num,c.effect_date,c.brk_cost##1 from itemVendPrice c,

(select b.item,b.vend_num,max(b.effect_date) as effect_date from

(select f.item,f.vend_num,f.effect_date

from itemVendPrice f,itemVend g where f.item=g.item and f.Vend_Num=g.Vend_Num and g.rank=1) b

group by b.item,b.vend_num) a

where c.item=a.item and c.vend_num=a.vend_num and c.effect_date=a.effect_date

测试结果ok -----

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值