Bonjour à tous,

Je crée une table temporaire qui va contenir tout un tas d'indicateurs. Je réalise d'abord un INSERT INTO pour créé les lignes de ma table et ensuite je réalise différents UPDATE ... SET ... FROM pour mettre à jour les différentes colonnes de ma table comme ci-dessous :

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
 
UPDATE	@ReturnTable
SET	    Bon = Qte
FROM    (SELECT	TEMP.Nom AS [RESULT_Nom], COUNT(DISTINCT TEMP.Numero) AS [Qte],  TEMP.FluxID AS [RESULT_FluxID], P.NumeroBadge
	     FROM	@table_temporaire AS TEMP
			INNER JOIN PASSAGES P WITH (nolock) ON P.Numero = TEMP.Numero AND P.NumeroBadge = TEMP.NumeroBadge AND P.ResultatControle = 1 AND DateHeure > @todayDate  
   	   GROUP BY	TEMP.Nom, TEMP.FluxID, P.NumeroBadge) AS [RESULT]
WHERE Operateur = RESULT_Nom AND FluxID = RESULT_FluxID
 
/********************************************************/			
UPDATE	@ReturnTable
SET	    Retours = Qte
FROM    (SELECT	TEMP.Nom AS [RESULT_Nom], COUNT(DISTINCT TEMP.Numero) AS [Qte],  TEMP.FluxID AS [RESULT_FluxID], P.NumeroBadge
	    FROM	@table_temporaire AS TEMP
			INNER JOIN PASSAGES P WITH (nolock) ON P.Numero = TEMP.Numero AND P.NumeroBadge = TEMP.NumeroBadge  AND P.ResultatControle = 0	AND DateHeure > @todayDate   
      	    GROUP BY	TEMP.Nom, TEMP.FluxID, P.NumeroBadge) AS [RESULT]
WHERE Operateur = RESULT_Nom AND FluxID = RESULT_FluxID
J'aurais voulu savoir si il existe une syntaxe SQL me permettant de mettre à jour toutes les colonnes directement sachant que pour les différents UPDATE, les conditions dans les clause WHERE sont identiques. Quelque chose qui ressemblerait au code ci-dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
UPDATE @ReturnTable
SET  CFBon = (SELECT ... FROM ... WHERE)
SET  RetoursCF = (SELECT ... FROM ... WHERE)
...
WHERE Operateur = RESULT_Nom AND FluxID = RESULT_FluxID
D'avance merci pour vos réponses.

Dens19