PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Trzeba przekonwertować scalanie Oracle na zapytanie do PostgreSQL

Możesz użyć INSERT ON CONFLICT () zamiast tego:

insert into feepay.TRPT_W2_REPORTS (ACCOUNT, URN, LAST_NAME, FIRST_NAME, ISENTITY, DOB, ADDRESS, LAST_UPDATE, STATUS)
WITH RWS AS (
  SELECT PROG.BINCLIENT, TRPT.PUT_DIRECTORY
  FROM  feepay.program2 PROG
    INNER JOIN  feepay.TRPT_W2_PROGRAMS TRPT
            ON (PROG.BINCLIENT = TRPT.BINCLIENT OR PROG.ISSUER_ID = TRPT.ISSUER_ID)
)
SELECT TCI.CUSTOMERNAME,
       TC.CUSTOMER_ID,
       TC.LAST_NAME,
       TC.FIRST_NAME,
       'Y'
       TC.DOB,
       TCA.ADDRESS, 
       now(), 
       'i'
FROM feepay.TAU_CARDNUMBERS TCN
  INNER JOIN feepay.TAU_CUSTOMER_CARDNUMBER TCCN ON (TCN.CARDNUMBER_ID = TCCN.CARDNUMBER_ID)
  INNER JOIN feepay.TBLCUSTOMERS TC ON (TCCN.CUSTOMER_ID = TC.CUSTOMER_ID)
  LEFT JOIN feepay.tau_customeraddress TCA ON (TC.CUSTOMER_ID = TCA.CUSTOMER_ID)
  INNER JOIN feepay.TAU_ISSUER TI ON (TI.ISSUER_ID = TCN.ISSUER_ID)
  INNER JOIN feepay.TBLCUSTOMERS TCI ON (TCI.CUSTOMER_ID = TI.CUSTOMER_ID)
  LEFT JOIN feepay.TRPT_W2_REPORTS TRPT ON (TRPT.URN = TC.CUSTOMER_ID)
WHERE BINCLIENT IN (SELECT BINCLIENT FROM RWS)
  AND TC.CUSTOMERNAME NOT IN ('freepay card','svds card')) TRPT2
ON CONFLICT (URN)
DO UPDATE SET
  ACCOUNT = excluded.ACCOUNT,
  LAST_NAME = excluded.LAST_NAME,
  FIRST_NAME = excluded.FIRST_NAME,
  DOB = excluded.DOB,
  ADDRESS = excluded.ADDRESS,
  LAST_UPDATE = now(),
  STATUS = 'u' /* uPDATED */

Musisz sprawdzić, czy kolumny na liście SELECT odpowiadają kolumnom wymienionym na liście kolumn INSERT.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zapobiec usunięciu pierwszego wiersza w tabeli (PostgreSQL)?

  2. Jak dodać źródło danych PostgreSQL do WildFly 9.0?

  3. Dwa SQL LEFT JOINS dają niepoprawny wynik

  4. Czy są jakieś opcje łączenia tabeli dla skojarzeń wiele-do-wielu?

  5. Zoptymalizuj PostgreSQL do szybkiego testowania