2014-04-18 2 views
0

Просто изучая PL/SQL и Oracle SQL Developer, и все еще немного согласен с синтаксисом. Я создал инструкцию select и Cursor For Loop. Оператор select извлекает кучу вещей, включая AVG (ИСПОЛЬЗОВАНИЕ), которые я пишу, добавляя в другую таблицу.(что я подозреваю очень просто) q о курсоре для цикла

В основном не проблема, но я не могу понять синтаксис для вставки AVG (USGE) в оператор INSERT.


v_dayNumber NUMBER; 

CURSOR c_nonPublicHoliday is SELECT STREET, SUBURB, DAY, AVG(VOLUME) 
          FROM RAW_TABLE, HOLIDAYS 
          WHERE to_char(day, 'd') = v_dayNumber 
          AND RAW_TABLE IN (SELECT HOLIDAY_DATE FROM HOLIDAYS) 
          GROUP BY STREET, SUBURB, DAY 
          ORDER BY DAY; 

BEGIN 

FOR v_forecastDay IN 1..14 LOOP 

    v_dayNumber := v_forecastDay; 

    FOR R1 IN c_nonPublicHoliday LOOP 

    INSERT INTO LOCAL_TABLE(STREET,SUBURB,DAY) 
    VALUES (R1.STREET, R1.SUBURB, R1.DAY); 

    END LOOP; 

END LOOP; 

END; 

По сути все, что я делаю, езду на велосипеде в течение следующих 14 дней и извлечение исторического среднего использования в этот день недели (я знаю, что сам по себе семь дней достигли бы того же самого, но есть другие все происходит). Просто нужно записать это среднее значение в этот LOCAL_TABLE, но я не уверен в необходимости синтаксиса

ответ

1

Хотя можно ссылаться на вычисленное среднее значение без предоставления псевдонима в запросе, который создает код, который довольно нечитабель и трудно поддерживать. В действительности, вы хотите добавить псевдоним в запросе (avg_volume в данном случае)

CURSOR c_nonPublicHoliday is SELECT STREET, SUBURB, DAY, AVG(VOLUME) avg_volume 

, а затем использовать этот псевдоним в вашем INSERT заявлении

INSERT INTO LOCAL_TABLE(STREET, SUBURB, DAY, AVG_VOLUME) 
VALUES (R1.STREET, R1.SUBURB, R1.DAY, r1.avg_volume); 
+0

Ах, конечно! Большое спасибо. Очень ценю помощь. – user3544027

Смежные вопросы