CREATE table table_x
(
id NUMBER, -- ID
NUMBER_history NUMBER, -- consecutive number
start_date date, -- start_date of next id=end_date of previous
end_date date -- should be >=start_date
);
INSERT INTO table_x VALUES (14 , 1, '13-NOV-92' ,'14-NOV-92');
INSERT INTO table_x VALUES (15 , 2, '14-NOV-92' ,'16-NOV-92');
INSERT INTO table_x VALUES (19 , 3, '16-NOV-92' ,'18-NOV-92');
INSERT INTO table_x VALUES (11 , 4, '18-NOV-92' ,'14-NOV-93');
INSERT INTO table_x VALUES (17 , 5, '15-NOV-93' ,'16-NOV-93');
INSERT INTO table_x VALUES (151 , 6, '16-NOV-93' ,'17-NOV-93');
INSERT INTO table_x VALUES (139 , 7, '17-NOV-93' ,'18-NOV-93');
INSERT INTO table_x VALUES (121 , 8, '19-NOV-93' ,'20-DEC-93');
INSERT INTO table_x VALUES (822 , 9, '20-DEC-93' ,'20-DEC-93');
我想要寫的查詢在哪裏可以找到在哪裏下一行>以前END_DATE的起始日期。他們必須是平等的。
我嘗試使用NUMBER_history作爲計數器來做類似的事情。 C-方式其中I由變量i組織週期和比較i和i + 1(NUMBER_history和NUMBER_history + 1)
select * INTO row_tblx from table_x where NUMBER_history=NUMBER_history and end_date<(select start_date from table_x where NUMBER_history=NUMBER_history+1);
但我必須通過n_counter從1組織循環到最後NUMBER_history值和獲取數據成多個行。 我該怎麼辦?
我嘗試
set serveroutput on
DECLARE
CURSOR cur IS
SELECT * FROM table_x;
TYPE row_tblx_type
IS
TABLE OF cur%ROWTYPE;
row_tblx row_tblx_type;
rowx cur%ROWTYPE;
nh_count NUMBER;
BEGIN
FOR NUMBER_history IN cur LOOP
select * INTO row_tblx from table_x where NUMBER_history=NUMBER_history and end_date<(select start_date from table_x where NUMBER_history=NUMBER_history+1);
DBMS_OUTPUT.PUT_LINE (row_tblx(NUMBER_history).id);
END LOOP;
END;
/
我怎樣才能做到這一點使用或另一個循環,多記錄或記錄,光標,一個錶行表作爲計數器(NUMBER_history)? 如何在沒有光標的情況下做到這一點?
通常的解決方案我試圖理解可憐的英語(不是每個人都是英語演講者)。然而,類似這樣的事情不能由英語不好的原因解決:「找到開始日期......>結束日期**它們必須相等**」。說真的,你可以在發佈之前檢查你寫的內容嗎?除此之外,我停止閱讀。你很幸運,其他人更寬容,但下次你可能不會那麼幸運。 – mathguy