首页 > 解决方案 > Oracle 嵌套查询

问题描述

有没有办法在顶部嵌套查询中提取字段而不必在下面的子查询中提取相同的字段?例如,日期字段没有在级别 2 中提取,但我在级别 3 中需要它。我只是想避免创建任何额外的视图或表来存储级别 2 数据。

SELECT PART, SUM_QTY, DATE1, DATE2 FROM                            - Level 3

(
SELECT PART,SUM(QTY) AS SUM_QTY FROM                               - Level 2

(
SELECT PART,QTY,DATE1 FROM TABLE1                                  - Level 1

LEFT JOIN

SELECT PART,QTY,DATE2 FROM TABLE2

)
GROUP BY PART

)
GROUP BY PART,DATE

任何帮助是极大的赞赏。谢谢

标签: sqloracle

解决方案


您编写的查询无效(左连接不会那样工作)。

无论如何,您可以使用 CTE(公用表表达式),即 WITH 因式分解子句。例如:

with 
level1 as
  (select a.part, a.qty, a.date1, b.date2
   from table1 a join table2b on a.part = b.part
  ),
level2 as
  (select l1.part, 
          sum(l2.qty) sum_qty
   from level1 l1
   group by l1.part
  )
-- level3
select l2.part, l2.sum_qty, l1.date1, l1.date2
from level2 l2 join level1 l1 on l2.part = l1.part

推荐阅读