如何将中间表的一列添加到最终结果表

  • 本文关键字:一列 添加 结果 中间 sql oracle
  • 更新时间 :
  • 英文 :


我是一个SQL新手。我遇到的任务是输出一个包含两列的表:服务名称和计数(请求此服务的时间数)。

现在我有一个包含两列的n中间表。它有一个服务ID列,而不是服务名称列,可用于从service表中检索服务名称。

我想知道如何保留count列,以便我可以在将id转换为名称后将其添加到最终结果中。我试着用With(…)至于存储中间表,但Oracle似乎不识别语法。任何帮助都是感激的。谢谢!

这个查询将允许您基于前两个表创建第三个表。

CREATE TABLE table3
AS
SELECT * FROM table1
INNER JOIN table2 ON table1.ServiceId = table2.ServiceId

如果您发布您真正拥有的(表的描述)和一些示例数据以及所需的输出,将会有所帮助。

我是这样理解的:

样本数据:

SQL> with
2  service (service_id, name) as
3    (select 1, 'Service 1' from dual union all
4     select 2, 'Service 2' from dual
5    ),
6  intermediate (inter_id, service_id, datum) as
7    (select 1, 1, date '2022-05-13' from dual union all
8     select 2, 1, date '2022-04-28' from dual union all
9     select 3, 1, date '2022-03-07' from dual
10    )

查询从这里开始;它选择服务名称和每个服务被请求的次数。表是外连接的(因为服务#2还没有任何请求,所以如果是内连接,你根本不会得到它):

11  select s.name,
12         count(i.inter_id) times_requested
13  from service s left join intermediate i on i.service_id = s.service_id
14  group by s.name
15  order by s.name;
NAME      TIMES_REQUESTED
--------- ---------------
Service 1               3
Service 2               0
SQL>

最新更新