Q:

Oracle inner join two select queries with columns first in second

I am trying to join two select queries where a column from the first query is used as value in the second query. Here's what the query looks like -
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)

As you can see the problem is  func(q1.a, someDate) . It is a function that takes the value of the column 'a' from 'q1' (which is also a date). 
The data with the same query looks like

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

Note: Col2 and Col4 are also functions where col4 refers to col2 value. I just didn't want to type it here because that would look confusing. This query will be chained up to 8 more selects. 

A:

It seems like something along the lines of the query below is what you're after:
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

