在以下查询中我成功获得当前价格,但如何获得以前的价格?
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
答案 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小提琴代码。