Salut ,
Je souhaite transformer l'UPDATE suivant en MERGE tout en faisant 1 seul SELECT d'un coup avec jointure des 4 tables et appliquer SELECT...CASE WHEN au lieu de CASE WHEN ...SELECT ...

cd_par est une donnée obligatoire dans chaque table.

Merci de votre aide.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
UPDATE PRODUITS P
SET  P.status         = 'A'
    ,P.cd_type = (CASE WHEN (SELECT  1 FROM PARAM PRM  WHERE PRM.cd_par = 2012  AND PRM.cd_par = P.cd_par  AND PRM.id_auto = P.id_auto) = 1
                  THEN 'P1' 
				  ELSE (SELECT  MIN(D.cd_FLO) KEEP(DENSE_RANK FIRST ORDER BY D.no_ordre)
                                           FROM  DIR D,COM  C
                                           WHERE            P.cd_par   =    2012
                                                        AND D.cd_par   =    2012
                                                        AND C.cd_par   =    2012
                                                        AND D.cd_par   = C.cd_par
                                                        AND P.id_COM   = C.id_COM
                        )
 				 END)
WHERE P.cd_par  = 2012
  and P.cd_typ  = 'OK' ;