Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Invalid Identifier in a query using subquery

886954Sep 19 2011 — edited Sep 20 2011
select DISTINCT(ii.equse_gkey), eu4.eq_nbr, reef.on_dr, reef.onpower, reef.offpower, reef.Plugged_Days, reef.Plugged_Hours
from invoice_items ii, equipment_uses eu4,
( SELECT onpower.dr on_dr, to_char(onpower.performed,'DD-MON-RRRR HH24:MI:SS') onpower,
            to_char(offpower.performed,'DD-MON-RRRR HH24:MI:SS') offpower,
            round(offpower.performed - onpower.performed) Plugged_Days,
            round(((offpower.performed - onpower.performed) * 24 )) Plugged_Hours
       FROM
         (
          SELECT tserv_id,
                 CASE
                   WHEN tserv_id = 'IN TIME' AND dr = 1 THEN
                     performed
                   WHEN tserv_id = 'ONPOWER' AND dr > 1 THEN
                     performed
                 END performed, dr
          FROM
        (
          SELECT tserv_id, performed,
                 dense_rank() over (order by performed) dr
          FROM (
                SELECT se.tserv_id, se.performed
                FROM   service_events se
                WHERE se.equse_gkey=ii.equse_gkey
                  AND se.tserv_id='ONPOWER'
               )

         UNION
         SELECT tserv_id, in_time,
                 dense_rank() over (order by in_time) dr
         FROM (
                SELECT 'IN TIME' tserv_id, in_time
                FROM   equipment_uses eu
                WHERE eu.gkey=ii.equse_gkey
                  AND eu.in_time IS NOT NULL
              )
         )
         WHERE CASE
                  WHEN tserv_id = 'IN TIME' and dr = 1 THEN
                    performed
                  WHEN tserv_id = 'ONPOWER' and dr > 1 THEN
                    performed
                  END IS NOT NULL
         /**/
         ) onpower,
         (
          SELECT tserv_id, performed,
                 dense_rank() over (order by performed) dr
          FROM (
                SELECT se.tserv_id, se.performed
                FROM   service_events se
                WHERE se.equse_gkey=ii.equse_gkey
                  AND se.tserv_id='OFFPOWER'

                UNION
                SELECT 'OFFPOWER' tserv_id, eu.out_time
                FROM   equipment_uses eu
                WHERE eu.gkey=ii.equse_gkey
                  AND eu.out_time IS NOT NULL
               )
          ) offpower
     WHERE onpower.dr = offpower.dr
     ) reef
where ii.equse_gkey=eu4.gkey
  and ii.equse_gkey is not null
  and ii.invoice_id=2609630
order by eu4.eq_nbr
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 18 2011
Added on Sep 19 2011
19 comments
475 views