2010-01-18 5 views
2

Je suis en train de convertir ce code d'Oracle:Oracle Syntaxe à Postgres Aide

CREATE VIEW PLANNED AS 
SELECT ASP.ASP_SPACE_NM, 
     SUM(MO.MO_TKR_TOTAL_OFF_SCHEDULED) "TOTAL_PLANNED" 
    FROM OBJECTIVE MO, SPACE ASP 
WHERE ASP.ASP_SPACE_NM = MO.ASP_SPACE_NM (+) 
    AND MO.MO_MSN_CLASS_NM = 'EPIC' 
GROUP BY ASP.ASP_SPACE_NM 

Pour Postgres.

Deux lignes dans ce sont me confondent:

SUM(MO.MO_TKR_TOTAL_OFF_SCHEDULED) "TOTAL_PLANNED" 

Est-ce la même chose que cela?

SUM(MO.MO_TKR_TOTAL_OFF_SCHEDULED) AS TOTAL_PLANNED 

Et je ne sais pas ce que le (+) signifie dans cette ligne:

WHERE ASP.ASP_SPACE_NM = MO.ASP_SPACE_NM (+) 

Répondre

2

C'est vieille école, GAUCHE spécifique Oracle syntaxe JOIN. Vous voulez le remplacer par:

CREATE VIEW PLANNED AS 
    SELECT s.asp_space_nm, 
      SUM(o.mo_tkr_total_off_scheduled) 'total_planned' 
    FROM SPACE s 
LEFT JOIN OBJECTIVE o ON o.asp_space_nm = s.asp_space_nm 
        AND o.mo_msn_class_nm = 'EPIC' 
GROUP BY s.asp_space_nm 

Référence:

2

Le + indique un (edit: gauche) jointure externe.

Et

SUM(MO.MO_TKR_TOTAL_OFF_SCHEDULED) "TOTAL_PLANNED" 

est en effet très probablement identique à

SUM(MO.MO_TKR_TOTAL_OFF_SCHEDULED) as "TOTAL_PLANNED" 

Si je me souviens bien as est pas vraiment nécessaire dans PostgreSQL ainsi (bien qu'il rend beaucoup plus explicite à mon avis).

Vous pouvez consulter la page suivante sur le wiki Postgresql pour plus de différences: Oracle to Postgres conversion.

+1

LEFT JOIN - vous pouvez avoir des JOINTS EXTÉRIEURS DROITS ... –

+0

Correct, je mettrai à jour la réponse en conséquence. – ChristopheD