У меня есть таблицасравнить и + 1 элемент оракул
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');
Я хочу написать запрос, где я могу найти где start_date из следующего ряда> датой_окончания предыдущего. они должны быть равными.
Я пытаюсь сделать что-то подобное, используя NUMBER_history в качестве счетчика. С-путь, где я организовать цикл по переменной я и сравнить и + 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