获取以前的数据(少一个运行列)

时间:2014-05-23 05:20:08

标签: sql oracle

在以下查询中我成功获得当前价格,但如何获得以前的价格?

SELECT CMPI_PRCINX AS CURRENT_PRICE, '?' as PRIVIOUS_PRICE
FROM CMD_MTRL_PRICE_INF WHERE CMPI_PRCINX = 
(SELECT MAX(CMPI_PRCINX) FROM CMD_MTRL_PRICE_INF GROUP BY CMI_CODE)

CURRENT_PRICE PRIVIOUS_PRICE
------------- --------------
          300 ?              

http://sqlfiddle.com/#!4/f4d68/1

我的桌面结构。

CREATE TABLE "CMD_MTRL_PRICE_INF" 
   (    "CMPI_CODE" NUMBER(*,0), 
  "CMI_CODE" NUMBER(*,0), 
  "CMN_CDTY_MTRL" NUMBER(*,0), 
  "CMPI_PRICE_TYPE" VARCHAR2(2 BYTE) DEFAULT 'PL', 
  "TRM_CODE" NUMBER(*,0), 
  "ENTRY_DATE" DATE DEFAULT SYSDATE, 
  "USR_CODE" NUMBER(*,0), 
  "CMPI_PRCINX" NUMBER(14,2), 
  "CMPI_ID_REF" NUMBER(*,0), 
  "CMPI_UPDATE_STS" VARCHAR2(1 BYTE) DEFAULT 'N', 
  "CMPI_EFF_DATE" DATE
   );
Insert into CMD_MTRL_PRICE_INF (CMPI_CODE,CMI_CODE,CMN_CDTY_MTRL,CMPI_PRICE_TYPE,TRM_CODE,ENTRY_DATE,USR_CODE,CMPI_PRCINX,CMPI_ID_REF,CMPI_UPDATE_STS,CMPI_EFF_DATE) values (98,50,344,'AL',null,to_date('23-MAY-14','DD-MON-RR'),0,300,97,'N',to_date('14-MAY-30','DD-MON-RR'));
Insert into CMD_MTRL_PRICE_INF (CMPI_CODE,CMI_CODE,CMN_CDTY_MTRL,CMPI_PRICE_TYPE,TRM_CODE,ENTRY_DATE,USR_CODE,CMPI_PRCINX,CMPI_ID_REF,CMPI_UPDATE_STS,CMPI_EFF_DATE) values (96,50,344,'PL',null,to_date('22-MAY-14','DD-MON-RR'),0,100,null,'N',to_date('14-MAY-22','DD-MON-RR'));
Insert into CMD_MTRL_PRICE_INF (CMPI_CODE,CMI_CODE,CMN_CDTY_MTRL,CMPI_PRICE_TYPE,TRM_CODE,ENTRY_DATE,USR_CODE,CMPI_PRCINX,CMPI_ID_REF,CMPI_UPDATE_STS,CMPI_EFF_DATE) values (97,50,344,'AL',null,to_date('22-MAY-14','DD-MON-RR'),0,200,96,'N',to_date('14-MAY-23','DD-MON-RR'));

mean to say that maximum price less than CURRENT_PRICE

1 个答案:

答案 0 :(得分:2)

尝试此查询: -

SELECT CMPI_PRCINX AS CURRENT_PRICE, (SELECT MAX(CMPI_PRCINX) FROM CMD_MTRL_PRICE_INF 
WHERE CMPI_PRCINX<(SELECT MAX(CMPI_PRCINX) FROM CMD_MTRL_PRICE_INF)) AS PRIVIOUS_PRICE
FROM CMD_MTRL_PRICE_INF WHERE CMPI_PRCINX = (SELECT MAX(CMPI_PRCINX) 
FROM CMD_MTRL_PRICE_INF GROUP BY CMI_CODE)

这是SQL小提琴代码。

http://sqlfiddle.com/#!4/46a23/2