Oracle SQL 插入语句 ORA-00979
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
此 returns 计数的 array/two 列 table 和值为 500
的日期。这就是我想要的。
但是,我为上述查询的结果创建了一个这样的 table:
CREATE TABLE my_new_table (
my_table_count NUMBER(10)
,my_table_date_value DATE
,my_table_value NUMBER(38)
)
我想要做的是用第一个查询中的所有数据填充新的 table,其中 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)所做的。我只想返回并在 table.
中获取值 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
。这样您就可以将新列添加到新 table。此外,您可以更改 table 如果有什么变化。
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
我有以下问题:
SELECT count(*) AS my_table_count
,my_table_date_value
FROM my_table
WHERE my_table_value = 500
GROUP BY my_table_date_value
此 returns 计数的 array/two 列 table 和值为 500
的日期。这就是我想要的。
但是,我为上述查询的结果创建了一个这样的 table:
CREATE TABLE my_new_table (
my_table_count NUMBER(10)
,my_table_date_value DATE
,my_table_value NUMBER(38)
)
我想要做的是用第一个查询中的所有数据填充新的 table,其中 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)所做的。我只想返回并在 table.
中获取值 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
。这样您就可以将新列添加到新 table。此外,您可以更改 table 如果有什么变化。
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