【问题标题】:Insert and select query.... Aggregate data in multiple rows插入并选择查询.... 聚合多行数据
【发布时间】:2018-10-25 02:25:26
【问题描述】:

我在 oracle 中有一个特定的要求,我在 table1 中有以下数据。我需要对table1的column3中具有相同编号和日期的值求和,然后插入table2中所示的数据。

有没有办法可以在查询中使用插入和选择来实现此要求?

表1

1 | 5/7/2013  | 10
1 | 5/7/2013  | 30
1 | 5/7/2013  | 50
1 | 6/28/2015 | 5
1 | 6/28/2015 | 70
1 | 6/28/2015 | 10
2 | 1/9/2016  | 60
2 | 1/9/2016  | 70
2 | 1/9/2016  | 80

表 2

1 | 5/7/2013  | 90
1 | 6/28/2015 | 85
2 | 1/9/2016  | 210

【问题讨论】:

  • 提示:GROUP BYSUM。您是否尝试过查询?学习 SQL 的最佳方法是练习使用它。
  • Ygla 您要求向我们展示您尝试使用的查询,它可能不完整或不正确 - 例如create table new_table2 as select col1, col2, sum(col3) sum_col3 from old_table1 group by col1, col2 但我们可以提供帮助。此页面的脚注中有一个帮助链接,您可以在其中找到有关如何提问的提示(以便您得到及时的答案)。

标签: sql oracle11g oracle-sqldeveloper


【解决方案1】:

这是一个例子。

create table c_table (
    c1 number,
    c2 DATE,
    c3 number);

create table c_table_2 (
    b1 number,
    b2 DATE,
    b3 number
);

insert into c_table values (1, to_date('5/7/2013', 'MM/dd/YYYY'), 10);
insert into c_table values (1, to_date('5/7/2013', 'MM/dd/YYYY'), 50);
insert into c_table values (1, to_date('6/28/2015', 'MM/dd/YYYY'), 5);
insert into c_table values (1, to_date('6/28/2015', 'MM/dd/YYYY'), 70);
insert into c_table values (1, to_date('6/28/2015', 'MM/dd/YYYY'), 10);
insert into c_table values (2, to_date('1/9/2016', 'MM/dd/YYYY'), 60);
insert into c_table values (2, to_date('1/9/2016', 'MM/dd/YYYY'), 70);
insert into c_table values (2, to_date('1/9/2016', 'MM/dd/YYYY'), 80);

commit;

insert into c_table_2 select c1, c2, sum(c3) from c_table group by c1, c2;

commit;

select * from c_table_2;

请告诉我这是否适合您

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 2017-09-18
    • 2014-12-31
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多