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 :
je souhaite obtenir le derniers enregistrement par statut
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,
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 ....
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.
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
merci de laisser des commentaires![]()
Partager