簡體   English   中英

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

這將返回一個數組/兩列表,其中包含計數和值為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM