oracle 查询困难

dl5txlt9  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(98)

我遇到了一个问题,我的工作数据库管理员告诉我,我不能再创建表了,我用下面的例子创建了一个具有以下规格的表,我想知道是否有任何方法可以做到这一点,而不需要创建一个新的表,但使用现有的一个。感谢您的评分

CREATE TABLE cc_aged_cxc_E_08 AS
SELECT *
FROM cc_aged_cxc_08
WHERE tipo = 'Equipos';

CREATE TABLE cc_aged_cxc_S_08_1 AS
SELECT trx_number, trx_date, SUM(saldo_func) AS suma_saldo_func
FROM cc_aged_cxc_S_08
GROUP BY trx_number, trx_date;

我尝试了一些更新,但没有工作。

w9apscun

w9apscun1#

仅当生成的表被丢弃到开始时。这意味着它们的使用不会超出这两个查询的范围。如果后续查询依赖于表/数据,则不存在,因为表将不存在,因为它在以下所有内容中都是临时的。
使用公共表表达式是一种方法;但是数据只在执行时保持:

With cc_aged_cxc_E_08 AS (
SELECT *
FROM cc_aged_cxc_08
WHERE tipo = 'Equipos'),

cc_aged_cxc_S_08_1 AS (
SELECT trx_number, trx_date, SUM(saldo_func) AS suma_saldo_func
FROM cc_aged_cxc_S_08
GROUP BY trx_number, trx_date)

SELECT * FROM cc_aged_cxc_S_08_1

使用它们作为子查询将是另一回事。

-- cc_aged_cxc_S_08_1
SELECT trx_number, trx_date, SUM(saldo_func) AS suma_saldo_func
FROM (SELECT *
      FROM cc_aged_cxc_08
      WHERE tipo = 'Equipos') as cc_aged_cxc_E_08
GROUP BY trx_number, trx_date;

但是,cc_aged_Cxc_S_08_1不存在,因此您可以使用上面的查询进行选择。
另一种方法是仅将所需的查询组合合并并发出一个查询。

SELECT trx_number, trx_date, SUM(saldo_func) AS suma_saldo_func
FROM cc_aged_cxc_08
WHERE tipo = 'Equipos'
GROUP BY trx_number, trx_date

最后,代替自动创建表格,它们可以只是“存在”,你插入其中。那么您就不是在创建表,而是在需要时使用它们。但是,如果您可以在需要时选择所需的数据,那么为什么要以这种方式创建表/使用表呢?

相关问题