也许,我在这里遗漏了一些东西,但没有任何真实的样本数据,这是我能想到的最好的。下面是 ddl 表、插入和查询以及结果的图像。
CREATE TABLE PRICE_HISTORY
( PRICE_DATE DATE,
TICKER VARCHAR2(20 BYTE),
OPEN_PRICE NUMBER,
CLOSE_PRICE NUMBER
)
CREATE TABLE PORTFOLIO_TABLE
( TICKER VARCHAR2(20 BYTE),
TICKER_DATE VARCHAR2(20 BYTE),
CUSTOMER VARCHAR2(20 BYTE)
)
Insert into PORTFOLIO_TABLE (TICKER,TICKER_DATE,CUSTOMER) values ('CYSL','1/16/2018','1');
Insert into PORTFOLIO_TABLE (TICKER,TICKER_DATE,CUSTOMER) values ('MCIG','04/1/2016','2');
Insert into PORTFOLIO_TABLE (TICKER,TICKER_DATE,CUSTOMER) values ('MSRT','09/13/2016','3');
Insert into PORTFOLIO_TABLE (TICKER,TICKER_DATE,CUSTOMER) values ('NTFU','01/16/2017','4');
Insert into PRICE_HISTORY (PRICE_DATE,TICKER,OPEN_PRICE,CLOSE_PRICE) values (to_date('27-MAR-2017 20:27:12','DD-MON-RRRR HH24:MI:SS'),'CYSL',1,2);
Insert into PRICE_HISTORY (PRICE_DATE,TICKER,OPEN_PRICE,CLOSE_PRICE) values (to_date('16-JUN-1997 20:27:33','DD-MON-RRRR HH24:MI:SS'),'MCIG',1,2);
Insert into PRICE_HISTORY (PRICE_DATE,TICKER,OPEN_PRICE,CLOSE_PRICE) values (to_date('31-MAY-2011 20:27:45','DD-MON-RRRR HH24:MI:SS'),'MSRT',5,8);
Insert into PRICE_HISTORY (PRICE_DATE,TICKER,OPEN_PRICE,CLOSE_PRICE) values (to_date('25-JAN-2021 20:27:55','DD-MON-RRRR HH24:MI:SS'),'NTFU',7,6);
WITH portfolio AS
( SELECT TICKER , TICKER_DATE, CUSTOMER FROM PORTFOLIO_TABLE
)
SELECT
CASE
WHEN PRICE_DATE > '01-JAN-17'
THEN CLOSE_PRICE
ELSE OPEN_PRICE
END AS AMOUNT,
PRICE_DATE,
P.TICKER,
OPEN_PRICE,
CLOSE_PRICE
FROM PRICE_HISTORY H,
PORTFOLIO P
WHERE H.TICKER = P.TICKER;
