PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Преобразуване на Oracle SQL Select в PostgreSQL select

Ето вашата заявка, пренаписана с помощта на 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

(+) е специфичен за Oracle LEFT OUTER JOIN синтаксис. За да го премахнете, ще е необходимо всеки USER_INSTANCE.instance_number трябва да има стойности за режимите на процеса, които са и трите:ПЛАНИРАНЕ, НАСТРОЙКА и ИЗХОД - пропуснете една и abx_apo_number няма да се показва в изхода.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изчакване на Python psycopg2

  2. Показване на изображение в Ireports с помощта на PostgreSql

  3. Получаване на последната дума от низ на Postgres, декларативно

  4. Кой е най-добрият начин за моделиране на връзка много към много

  5. Няма уникално ограничение или ограничение за изключване, съответстващо на ON CONFLICT