查询困难

问题描述 投票:0回答:1

我有一个问题,我的工作数据库管理员告诉我,我无法再创建表,我使用以下示例创建了一个具有以下规格的表,我想知道是否有任何方法可以在不需要的情况下执行相同的操作创建一个新表,但使用现有表。谢谢你:)

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;

我尝试了一些更新,但没有成功。

sql oracle-sqldeveloper plsqldeveloper
1个回答
0
投票

仅当生成的表格一开始就被丢弃。这意味着它们的使用不会超出这两个查询的范围。如果后续查询依赖于表/数据,则不会,因为表将不存在,因为它在以下所有查询中都是临时的。

使用通用表表达式是一种方法;但数据仅在执行时保留:

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_ged_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 
© www.soinside.com 2019 - 2024. All rights reserved.