Bonjour,

J'ai créé une vue qui fait une jointure entre 2 tables TABLE_CLIENTS a et TABLE_GERANTS g et qui contient des sous-requêtes faisant appel à d'autres tables.
A l'exécution, un message d'erreur : Une sous-requête remonte plus qu'une ligne.
En fait la vue provoque une erreur car elle ramène 2 lignes pour un client car pour un client, on trouve une ligne avec chaque sous-condition
(on trouve toujours une ligne avec TYPE_GERANCE='APPLIQUE' et une ligne avec TYPE_GESTION='SUIVIE' ou 'GESTION' ou 'ADVISOR'.
Dans tous les cas, il faudrait qu'elle ne ramène qu'une ligne par Client
Comment modifier la requête de la vue afin de ne ramener qu'une ligne pat Client ?
Exemple:

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
SELECT
	(CASE 
		WHEN g.SOCI_NUM = a.SOCI_NUM 
		   AND g.CLIENT_NUM = a.CLIENT_NUM 
		   AND g.ETAT = 'ACTIF' 
		   AND g.TYPE_GERANCE IN ('SUIVIE','GESTION','ADVISOR')  
		THEN g.CO_GERANT
	END)								                                	  AS CODE_GESTIONNAIRE,			
	(CASE 
		WHEN g.SOCI_NUM = a.SOCI_NUM 
		   AND g.CLIENT_NUM = a.CLIENT_NUM 
		   AND g.ETAT = 'ACTIF' 
	           AND g.TYPE_GERANCE = 'APPLIQUEE' 
		THEN g.CO_GERANT
	END)							                                                  AS CODE_RECHERCHE,   
	(CASE 
		WHEN a.TYPE_SORTIE = '0' 
			THEN (CASE 
					WHEN g.SOCI_NUM = a.SOCI_NUM 
					   AND g.CLIENT_NUM = a.CLIENT_NUM 
					   AND g.ETAT = 'ACTIF' 
					   AND g.TYPE_GERANCE ='APPLIQUEE'
					THEN (select C1.CODE_ACCES
                                                     from TABLE_CODE_GERANTS C1
                                                      where C1.NO_SOCI = g.NO_SOCI
							AND C1.CO_GERANT = g.CO_GERANT) 
	                              END)		
   (CASE 
		WHEN a.TYP_SORTIE = '1' 
			THEN (CASE 
					WHEN g.SOCI_NUM = a.SOCI_NUM 
					  AND g.CLIENT_NUM = a.CLIENT_NUM 
					  AND g.ETAT = 'ACTIF' 
					  AND g.TYPE_GERANCE IN ('SUIVIE','GESTION','ADVISOR')
					THEN (select C1.CO_ACCES
                                                    from TABLE_CODE_GERANTS C1
                                                     where C1.NO_SOCI  = g.NO_SOCI
							AND C1.CO_GERANT = g.CO_GERANT)							  
				        ELSE (CASE 
						WHEN g.SOCI_NUM = a.SOCI_NUM
						  AND g.CLIENT_NUM = a.CLIENT_NUM 
						  AND g.ETAT = 'ACTIF' 
						  AND g.TYPE_GERANCE = 'APPLIQUEE' 
						     THEN (select C1.CODE_ACCES)
								 from TABLE_CODE_GERANTS C1
								     where C1.SOCI_NUM  = g.SOCI_NUM
									AND C1.CO_GERANT = g.CO_GERANT)
		                                  END)
	                      END)
   END)		                                                                                                                AS CODE_GESTION_EXTERNE
FROM TABLE_CLIENTS a, TABLE_GERANTS g 
      WHERE a.SOCI_NUM = g.SOCI_NUM 
        AND a.CLIENT_NUM = g.CLIENT_NUM
Merci !