当前位置: 代码迷 >> Oracle管理 >> 求采办价格分表sql语句
  详细解决方案

求采办价格分表sql语句

热度:99   发布时间:2016-04-24 05:09:36.0
求采购价格分表sql语句
针对某个时段内计算出单个物料平均采购价格,以比较供应商之间的供货价格差异以及物料采购的价格变化情况。报表的记录内容主要包括:起始日期、物料代码、供应商名称、订货数量、订货金额、最高价格、平均价格、最低价格、最新价格等。

现有表T 及字段分别为: BOM_CODE 物料代码, LRSL 入库数量, PRICE 单价,JE 金额,FSRQ 入库时间 ,GYS_CODE 供应商 ;请问这样的sql语句如何写?

------解决方案--------------------
SQL code
create table t(bom_code varchar2(20),lrsl number(19,2),price number(19,4),je number(19,4),fsrq date,gys_code varchar2(20));insert into t values('物料1',200,5,1000,to_date('2012.01.01','yyyy.mm.dd'),'供应商1');insert into t values('物料1',100,10,1000,to_date('2012.01.02','yyyy.mm.dd'),'供应商2');insert into t values('物料1',2000,4,8000,to_date('2012.01.03','yyyy.mm.dd'),'供应商3');insert into t values('物料1',100,3,300,to_date('2012.02.01','yyyy.mm.dd'),'供应商1');insert into t values('物料1',300,7,2100,to_date('2012.02.02','yyyy.mm.dd'),'供应商2');insert into t values('物料1',200,5,1000,to_date('2012.02.03','yyyy.mm.dd'),'供应商3');insert into t values('物料2',200,5,1000,to_date('2012.04.01','yyyy.mm.dd'),'供应商1');insert into t values('物料2',100,10,1000,to_date('2012.04.02','yyyy.mm.dd'),'供应商2');insert into t values('物料2',2000,4,8000,to_date('2012.04.03','yyyy.mm.dd'),'供应商3');insert into t values('物料2',100,3,300,to_date('2012.02.01','yyyy.mm.dd'),'供应商1');insert into t values('物料2',300,7,2100,to_date('2012.02.02','yyyy.mm.dd'),'供应商2');insert into t values('物料2',200,5,1000,to_date('2012.02.03','yyyy.mm.dd'),'供应商3');select t.bom_code 物料代码,    t.gys_code 供应商名称,    min(t.fsrq) 起始日期,    sum(t.lrsl) 订货数量,        sum(t.lrsl*t.price) 订货金额,--如果你的je正确,也可以sum(t.je)    max(t.price) 最高价格,    avg(t.price) 平均价格,    min(t.price) 最低价格,    max(t2.price) 最新价格from t,(select t1.bom_code,t1.gys_code,price from t,(select bom_code,gys_code,max(fsrq) fsrq     from t group by bom_code,gys_code) t1where t.bom_code=t1.bom_code     and t.gys_code=t1.gys_code and t.fsrq=t1.fsrq) t2where t.bom_code=t2.bom_code and t.gys_code=t2.gys_codegroup by t.bom_code,t.gys_codeorder by t.bom_code,t.gys_code;/
------解决方案--------------------
SQL code
--最新价格 可以采用分析函数来算,效率要高一点:(示例数据如#2)select bom_code 物料代码    ,gys_code 供应商名称    ,min(fsrq) 起始日期    ,sum(lrsl) 订货数量        ,sum(je) 订货金额    ,max(price) 最高价格    ,avg(price) 平均价格    ,min(price) 最低价格    ,min(price) keep (dense_rank first order by fsrq desc) 最新价格from tgroup by bom_code,gys_code;
------解决方案--------------------
亲自动手尝试了,才知道那个好
  相关解决方案