Sql 获取以前的数据(少一个正在运行的列)
在下面的查询中,我成功地获得了当前价格,但如何获得以前的价格Sql 获取以前的数据(少一个正在运行的列),sql,oracle,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) 我的桌子结构 CREATE TABLE "CMD_MTRL_PRICE_INF" (
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)
我的桌子结构
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'));
我的意思是说最高价格低于当前价格请尝试以下查询:-
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 FIDLE代码
请你描述一下你的专栏。请看,我已经编辑过了…你的意思是说最高价格低于当前价格吗?是的@R.S。。。我不知道为什么大多数人不理解我的问题
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)