У меня есть запрос ниже:Oracle SQL вставить в заявлении ORA-00979
SELECT count(*) AS my_table_count
,my_table_date_value
FROM my_table
WHERE my_table_value = 500
GROUP BY my_table_date_value
Это возвращает таблицу массив/два столбца графа и дату, когда значение является 500
. Это то, что я хочу.
Однако, я создал таблицу, как это для результатов выше запроса:
CREATE TABLE my_new_table (
my_table_count NUMBER(10)
,my_table_date_value DATE
,my_table_value NUMBER(38)
)
То, что я хочу сделать, это заполнить новую таблицу со всеми данными из первого запроса, где my_table_value > 0
Я попытался использовать вставку в (выберите ...), но я не уверен, как заполнить my_table_value
таким образом. Я думаю, что итерация от 1 до max(my_table_value)
сделает это, но я не уверен, как писать это в Oracle SQL.
Результат я хочу, где я могу запросить my_new_table
вместо того, чтобы использовать первый запрос следующим образом:
SELECT my_table_count
,my_table_date_value
FROM my_new_table
WHERE my_table_value = 500;
EDIT
Вот что мне теперь делать для одного значения (скажем, 500) , Все, что я хочу сделать, это вернуться и получить значения 0-499 в таблице.
SET my_value = 500;
SET sqlString = 'select COUNT(*) AS MY_COUNT,MY_DATE from MY_TABLE where MY_VALUE=? group by MY_DATE';
SET rows[] = <query result, with my_value = 500>
DECLARE index INTEGER 1;
FOR result as r.rows[] DO
SET count = result.MY_COUNT;
SET my_date = result.MY_DATE;
insert into MY_NEW_TABLE(MY_COUNT,MY_DATE,MY_VALUE)
VALUES(count,my_date,my_value);
SET index = index + 1;
END FOR;
Все, что я хочу сделать, это изменить это, поэтому он вставляет все от 1 до макс (my_value)
Ваш вопрос на самом деле не имеет смысла. В предлагаемой таблице есть три столбца, но запрос возвращает только два. Образцы данных будут большой помощью к вопросу. –
@GordonLinoff Да, я знаю, что я хочу в новой таблице третий столбец, сопоставленный с WHERE первого запроса. Таким образом, новая таблица имеет 2 значения, возвращаемые первым запросом, а также третье значение, которое будет в настоящее время в WHERE. – bbedward
Если вы переходите от двух до трех столбцов, вам нужно указать значение для нового столбца. Чтобы упростить заполнение его значением по умолчанию и вернуться и обновить значение после копирования таблицы. – Nathan