PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Convertendo Oracle SQL Select em PostgreSQL select


Aqui está sua consulta reescrita usando a sintaxe ANSI-92 JOIN:
  SELECT a.abx_apo_number,
         COUNT(ap1.process_mode) AS NUM_PLANNING,
         COUNT(ap2.process_mode) AS NUM_SETUP,
         COUNT(ap3.process_mode) AS NUM_OUTPUT
     FROM ABX a
LEFT JOIN USER_INSTANCE u ON u.abx_apo_number = a.abx_apo_number
LEFT JOIN ACTIVE_PROCESS ap1 ON ap1.process_instance_number = u.instance_number
                            AND ap1.process_mode = 'PLANNING'
LEFT JOIN ACTIVE_PROCESS ap2 ON ap2.process_instance_number = u.instance_number
                            AND ap2.process_mode = 'SETUP'
LEFT JOIN ACTIVE_PROCESS ap3 ON ap3.process_instance_number = u.instance_number
                            AND ap3.process_mode = 'OUTPUT'
 GROUP BY a.abx_apo_number

O (+) é a sintaxe LEFT OUTER JOIN específica do Oracle. Para removê-lo, seria necessário que cada USER_INSTANCE.instance_number teria que ter valores para os modos de processo sendo todos os três:PLANNING, SETUP e OUTPUT - omita um, e o abx_apo_number não seria exibido na saída.