[英]Oracle SQL insert into statement 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
我嘗試使用insert into(select ...),但是我不確定如何以這種方式填充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;
編輯
這是我現在為一個值(例如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到max(my_value)的所有內容
我不完全確定這是您要追求的,但是聽起來您想將所有粗略的數據提取到“ my_new_table”中,然后稍后進行篩選..
insert into my_new_table
( my_table_count,
my_table_date_value,
my_table_value )
select count(*) as my_table_count,
my_table_date_value ,
my_table_value
from my_table
where my_table_value > 0
group by my_table_date_value,
my_table_value
(注意:未經測試,因為沒有示例數據,也沒有創建腳本,等等。即:沒什么可繼續的:()
您可以使用create table as select
。 這樣,您可以將新列添加到新表中。 另外,您可以在發生某些更改時更改表。
create table my_new_table as
select count(*) as my_table_count,my_table_date_value,my_table_value
from my_table
where my_table_value = 500 --add more conditions when needed
group by my_table_date_value
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.