首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求高效率加工最近日期,再最大单价视图

2013-08-01 
求高效加工最近日期,再最大单价视图求高效加工最近日期,再最大单价视图环境:SQL2000要求:1、首先计算出该加

求高效加工最近日期,再最大单价视图
求高效加工最近日期,再最大单价视图           
环境:SQL2000
要求:
1、首先计算出该加工单位、该加工产品、该产品工序的最大日期的单价
2、如果同一天加工单位、产品、工序、单价 均相同时取最大单价
3、加工单位、产品、工序、单价 不能有重复行

来源:  视图view_wwjgjgdj
加工单位, 日期, 产品, 加工工序, 加工单价
traderid,  billdate,  materialid,  vipbmclid,  price
10001   ,2013-03-01 ,   3001    ,    1      ,  2.3  ----前面4个字段重复
10001   ,2013-03-01 ,   3001    ,    1      ,  2.7  ----前面4个字段重复
10001   ,2013-03-08 ,   3001    ,    2      ,   3
10001   ,2013-06-05 ,   3001    ,    1      ,   4   
10001   ,2013-06-07 ,   3001    ,    1      ,   3.3   ---完全重复
10001   ,2013-06-07 ,   3001    ,    1      ,   3.3   ---完全重复  
2008    ,2013-06-01 ,   7008    ,    1      ,   4.1   ----不同加工单位

一、求视图view  vip_wwjgdjbbmx    select  * from   vip_wwjgdjbbmx 
traderid,  billdate,  materialid,  vipbmclid,  price
10001   ,2013-06-07 ,   3001    ,    1      ,   3.3   
2008    ,2013-06-01 ,   7008    ,    1      ,   4.1   

[解决办法]


-- 修改了一下测试数据以求效果更明显


select 10001 traderid,'2013-03-01' billdate,3002 materialid,1 vipbmclid,2.3 price ----前面4个字段重复
into #t
union all select 10001,'2013-03-01',3002,1,2.7----前面4个字段重复
union all select 10001,'2013-03-08',3001,2, 3
union all select 10001,'2013-06-05',3001,1, 4 
union all select 10001,'2013-06-07',3001,1, 3.3 ---完全重复
union all select 10001,'2013-06-07',3001,1, 3.3 ---完全重复
union all select 2008,'2013-06-01',7008,1, 4.1 ----不同加工单位

select t1.traderid, t1.materialid,t1.vipbmclid,t1.billdate, MAX(t1.price) AS Price
from 
(
select traderid,materialid,vipbmclid,max(billdate) billdate
from #t
group by traderid,materialid,vipbmclid
) t
join #t t1
on t.traderid=t1.traderid and t.materialid=t1.materialid
and t.vipbmclid=t1.vipbmclid and t.billdate=t1.billdate 
GROUP BY t1.traderid, t1.materialid,t1.vipbmclid,t1.billdate  

drop table #t

热点排行