Bonjour ,

J'essaie de construire une requête qui me retourne le résultat en fonction des cases .
sauf que mon problème est que mon case me retourne un résultat à chaque clause car il ne pointe pas sur la dernière date d’enregistrement.

actuellement j'ai ce résultat :
Date DOS_ID Status_Code
2012-05-03 456 20
2012-12-13 456 30,
2014-05-15 456 50,
2013-05-21 456 80
2011-05-23 789 90,
2012-07-23 789 30,
2013-11-26 352 80
2012-12-23 352 90,
2011-06-09 352 50,
je souhaite obtenir le derniers enregistrement par statut
Date DOS_ID Status_Code
2014-05-15 456 50
2012-07-23 789 30,
2013-11-26 352 80,


est ce que je dois ajouter un :

1-HAVING pour selectionner les Max(Date)

ou

2-ajouter dans mon from un select (max(date) from ma table_1 ) inner join ....

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
SELECT DISTINCT max(date),CAS_CODE , STATUS_CODE , "TO"=
 
CASE	
	WHEN STATUS_CODE IN  (20,30,50) THEN (SELECT NOM_CREATOR)
	WHEN STATUS_CODE IN (70,80)THEN (SELECT NOM_MANAGER)
	WHEN STATUS_CODE IN (90)THEN (SELECT NOM_TEAM)
	WHEN STATUS_CODE IN (100,10)THEN (SELECT NOM_EMPLOY)
 
 
END
 
FROM 
 
MA_TABLE_1 
INNER JOIN MA_TABLE_2 ON ID_1 = ID_2
INNER JOIN MA_TABLE_3 ON ID_3 = ID_4
INNER JOIN MA_TABLE_4 ON ID_4 = ID_2
 
LEFT JOIN MA_TABLE_5 ON ID_5 = ID_2
LEFT JOIN MA_TABLE_6 ON ID_7 = ID_2
 
WHERE 
 
DOS_ID IN (352,456,789,...,...)
 
GROUP BY
 
NOM_CREATOR
NOM_MANAGER
NOM_TEAM
NOM_EMPLOY
Je reste dans l'attente d'un retour de votre part concernant la structure de ma requête . est ce que je dois changer de syntaxe (utilisation de case)ou je dois ajouter une sous requête pour limiter le résultat sur les derniers enregistrements.

merci de laisser des commentaires