一个价格表Price :表结构和字段如下:货品 价格类型 生效日期 价格
A 批发价 2010/01/05 10
A 批发价 2009/05/30 8
A 零售价 2011/05/01 15
A 零售价 2005/04/01 15
A 零售价 2010/01/15 20
B 批发价 2011/02/05 10
B 批发价 2010/12/05 10
B 批发价 2009/05/30 8
B 零售价 2005/04/01 15
B 零售价 2010/01/15 20要求的是最新(生效日期最后)的批发价和零售价和今天用的批发价和零售价SQL如何写呢?
A 批发价 2010/01/05 10
A 批发价 2009/05/30 8
A 零售价 2011/05/01 15
A 零售价 2005/04/01 15
A 零售价 2010/01/15 20
B 批发价 2011/02/05 10
B 批发价 2010/12/05 10
B 批发价 2009/05/30 8
B 零售价 2005/04/01 15
B 零售价 2010/01/15 20要求的是最新(生效日期最后)的批发价和零售价和今天用的批发价和零售价SQL如何写呢?
解决方案 »
- 特急:关于oracle http server 的问题,请高手进入解答,谢谢!
- 在9i之前的oracle中能否变通的实现二维数组?
- linux下的oracle中文字符问题!!
- 在oracle 10G的管理控制台上,我不能修改一个日期型数值。
- 将1个表的数据插入另一个表的存储过程
- 高分求教,有关Oracle驱动的问题,更换驱动以后,Sql语句不好用了!急,各位请进!
- 在更新后,如何知道更新了几条数据?
- 熟悉C#和Oracle的高手看过来
- 如何快速查询一百万条记录的表
- oracle8中如何实现临时表的创建?CREATE TEMPORARY TABLE 行不通!!!!
- 关于触发器建立的问题,在线等待,多谢赐教
- 求一SQL查询语句
where not exists(select 1 from price b where t.货品=b.货品 and t.价格类型=b.价格类型 and t.生效时间<b.生效时间)
union all
Select 生效日期,货品,价格类型,价格 from Price group by 货品,价格类型,价格
where to_char(生效日期,'yyyy/mm/dd')= select to_char(sysdate,'yyyy/mm/dd') from dual;
union all
Select 生效日期,货品,价格类型,价格 from Price
where to_char(生效日期,'yyyy/mm/dd')= select to_char(sysdate,'yyyy/mm/dd') from dual;
select 货品,价格类型,生效日期,价格
(select
货品,价格类型,生效日期,价格,
row_number() over(partition by 货品,价格类型 order by 生效日期 desc) rn
from tb)
where rn=1--or exists
union all
Select 生效日期,货品,价格类型,价格 from Price group by 货品,价格类型,价格
where to_char(生效日期,'yyyy/mm/dd')= select to_char(sysdate,'yyyy/mm/dd') from dual;