我已經寫了一個查詢,以便從BDB選擇*只得到更新的價格值DAY的組合,INST在最新的ACT 我創建的表像的Oracle SQL查詢優化另外1
CREATE TABLE bdb(
ACT NUMBER(8) NOT NULL,
INST NUMBER(8) NOT NULL,
DAY DATE NOT NULL,
PRICE VARCHAR2 (3),
CURR NUMBER (8,2),
PRIMARY KEY (ACT,INST,DAY)
);
使用該使用此查詢 我得到的只是一天,INST來填充表
DECLARE
t_day bdb.day%type:= '1-JAN-16';
n pls_integer;
BEGIN
<<act_loop>>
FOR i IN 1..3 LOOP --NUMBER OF ACT i
<<inst_loop>>
FOR j IN 1..1000 LOOP --NUMBER OF INST j
t_day:='3-JAN-16';
<<day_loop>>
FOR k IN 1..260 LOOP --NUMBER OF DAYS k
n:= dbms_random.value(1,3);
INSERT into bdb (ACT,INST,DAY,PRICE,CURR) values (i,j,t_day,n,10.3);
t_day:=t_day+1;
END loop day_loop;
END loop inst_loop;
END loop act_loop;
END;
/
,價格
select day,inst,price from bdb where (act=(select max(act) from bdb))
minus
select day,inst,price from bdb where act=(select max(act)-1 from bdb);
以上是快速的,但我想以有效的方式獲得所有的領域。 一個我想出了有點慢這是本,
select
e1.*
from
(select
*
from
bdb
where
(act=(select max(act) from bdb))
)e1,
(select day,inst,price from bdb where (act=(select max(act) from bdb))
minus
select day,inst,price from bdb where act=(select max(act)-1 from bdb)) e2
where
e1.day=e2.day and e1.inst=e2.inst;
誰能給任何建議,如何更多的優化呢?或出使用交叉連接兩個表如何獲得所需的output.Help我;)
只是我需要的是
ACT INST DAY PRI CURR
------------------------------------
3 890 05-MAR-16 3 10.3
3 890 06-MAR-16 2 10.3
3 890 07-MAR-16 2 10.3
3 891 05-MAR-16 2 10.3
3 891 06-MAR-16 1 10.3
3 891 07-MAR-16 2 10.3
4 890 05-MAR-16 3 10.3
4 890 06-MAR-16 2 10.3
4 890 07-MAR-16 1 10.3
4 891 05-MAR-16 2 10.3
4 891 06-MAR-16 2 10.3
4 891 07-MAR-16 1 10.3
這裏(890,05-MAR-16),(890,06 -MAR-16)(890,06-MAR-16) (891,05-MAR-16)(891,06-MAR-16)(891,06-MAR-16)in act = 3 價格是 3,2,2 2,1,2
but when act=4 happens
(890,07-MAR-16)
(891,06-MAR-16)
(891,07-MAR-16)
price values are change from what they were in act=3.
others not change
最終我需要的是
ACT INST DAY PRI CURR
------------------------------------
4 890 07-MAR-16 1 10.3
4 891 06-MAR-16 2 10.3
4 891 07-MAR-16 1 10.3
感謝您的快速回復...我想我沒有正確解釋問題....我認爲這將明確闡明它。更新的問題是 – Noah
你的第一個解釋是正確的...但我需要他們與他們的ACT和CURR領域有效的方式 – Noah
道歉;我錯過了我的第二個查詢中的'AND prev_price!= price'條件。這應該現在工作。 – Boneist