Oracle内部连接两个选择查询,其中第一列是第一列

时间:2016-11-03 06:21:52

标签: oracle inner-join

我正在尝试连接两个选择查询,其中第一个查询中的列用作第二个查询中的值。这是查询的样子 -

SELECT q1.a, q1.b, q2.a, q2.b FROM
 (SELECT
    func(sysdate, someDate) as a, 
    col2 as b,
    rownum AS r
     FROM DUAL) q1
INNER JOIN
 (SELECT
    func(q1.a, someDate) as a,
    col4 as b,
    rownum AS r
    FROM DUAL) q2
USING (r)

正如您所看到的,问题是func(q1.a, someDate)。它是一个从'q1'(也是一个日期)获取列'a'的值的函数。

具有相同查询的数据类似于

  

80.05 2015-11-16 17:26:00 80.05 2015-11-16 17:26:00 1

注意:Col2和Col4也是col4引用col2值的函数。我只是不想在这里打字,因为那会让人感到困惑。此查询最多可链接8个选项。

1 个答案:

答案 0 :(得分:1)

以下查询的内容似乎就是你所追求的:

WITH q1 AS 
( SELECT func(sysdate, someDate) as a, 
         col2 as b,
         rownum AS r
    FROM DUAL
)
SELECT q1.a, 
       q1.b, 
       func(q1.a, someDate) as a,
       col4 as b
 FROM q1