【问题标题】:three different tables nested with CTE and Join SQL functions三个不同的表嵌套了 CTE 和 Join SQL 函数
【发布时间】:2021-10-04 11:55:54
【问题描述】:

enter image description here我有三个表要根据它进行一些计算。但是,我在下面所说的没有用。 有人可以给我任何反馈吗?

谢谢你, 公式:

(runnincost/total(gas_production of eacy year))*gas_production of each year)

作为:

CTE  c (id,filed,year_1,year_2,year_3)

as( select g.id, g.field,

(r.year_1/sum(g.year_1))*g.year_1 ,

(r.year_2/sum(g.year_2))*g.year_2 ,

(r.year_3/sum(g.year_3))*g.year_3 ,

from group_1 as g

inner join ref_fee as r

on r.id=g.id

group  by g.field )


select c.id, c.filed,

c.year_1*b.year_1 as year_1, 

c.year_2*b.year_2 as year_2,

c.year_3*b.year_3 as year_3

from c

inner join back b

on b.id=c.id

group by c.field;

【问题讨论】:

    标签: database join oracle-sqldeveloper common-table-expression


    【解决方案1】:

    “不起作用”很难调试。

    很明显,表的别名(在 Oracle 中)不能有 AS 关键字(列可以)。修复后,查询如下所示:

    WITH
       c (id,
          filed,
          year_1,
          year_2,
          year_3)
       AS
          (  SELECT g.id,
                    g.field,
                    (r.year_1 / SUM (g.year_1)) * g.year_1,
                    (r.year_2 / SUM (g.year_2)) * g.year_2,
                    (r.year_3 / SUM (g.year_3)) * g.year_3
               FROM group_1 g INNER JOIN ref_fee r ON r.id = g.id
           GROUP BY g.field)
      SELECT c.id,
             c.filed,
             c.year_1 * b.year_1 AS year_1,
             c.year_2 * b.year_2 AS year_2,
             c.year_3 * b.year_3 AS year_3
        FROM c INNER JOIN back b ON b.id = c.id
    GROUP BY c.field;
    

    我不知道它是否会起作用,因为我没有你的桌子,也不知道你要执行什么“计算”。

    【讨论】:

    • 嗨,非常感谢您的回复。再次不起作用。只是添加了表格的屏幕截图和陈述的公式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 2019-08-28
    相关资源
    最近更新 更多