Bonjour à tous,
Je m'arrache un peu les cheveux sur ce problème.
Voici le détail de la table :
Insérons quelques données :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE T_TEST ( SomeId bigint primary key identity, -- Un Id tout simple DateHeure datetime NOT NULL, -- Une date d'insertion EventId bigint NOT NULL, -- Un Id d'event EventValue bit NOT NULL, -- Une valeur booléenne EstVisibleDansRequete varchar(50) NOT NULL -- Un champs présent juste pour la requete afin de savoir si on est ok )
Je cherche à obtenir, pour chaque EventId, l'EventValue inséré le dernier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 INSERT INTO T_TEST (DateHeure, EventId, EventValue, EstVisibleDansRequete) VALUES (GETDATE(), 1,0,'non') INSERT INTO T_TEST (DateHeure, EventId, EventValue, EstVisibleDansRequete) VALUES (GETDATE(), 1,1,'non') INSERT INTO T_TEST (DateHeure, EventId, EventValue, EstVisibleDansRequete) VALUES (GETDATE(), 1,0,'non') INSERT INTO T_TEST (DateHeure, EventId, EventValue, EstVisibleDansRequete) VALUES (GETDATE(), 1,1,'oui') INSERT INTO T_TEST (DateHeure, EventId, EventValue, EstVisibleDansRequete) VALUES (GETDATE(), 2,0,'non') INSERT INTO T_TEST (DateHeure, EventId, EventValue, EstVisibleDansRequete) VALUES (GETDATE(), 2,1,'non') INSERT INTO T_TEST (DateHeure, EventId, EventValue, EstVisibleDansRequete) VALUES (GETDATE(), 2,1,'oui') INSERT INTO T_TEST (DateHeure, EventId, EventValue, EstVisibleDansRequete) VALUES (GETDATE(), 3,1,'oui') INSERT INTO T_TEST (DateHeure, EventId, EventValue, EstVisibleDansRequete) VALUES (GETDATE(), 4,0,'non') INSERT INTO T_TEST (DateHeure, EventId, EventValue, EstVisibleDansRequete) VALUES (GETDATE(), 4,1,'oui')
Concrètement, j'ai essayé de la sorte :
On est d'accord, ça fonctionne plutôt bien, et ce n'est pas difficile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT MAX(DateHeure), EventId FROM T_Test GROUP BY EventId
Seulement, j'ai besoin aussi de l'EventValue (en fait, j'ai besoin de tous les champs de la table).
J'ai donc essayé :
Et bien évidemment, ça ne renvoie pas les résultats que j'attends (puisque je me retrouve avec un group by à la fois par EventId et EventValue).
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT MAX(DateHeure), EventId, EventValue FROM T_Test GROUP BY EventId, EventValue
Et à partir de là, je suis perdu, je ne sais clairement pas comment m'y prendre.
Avez vous une idée ?
Le résultat attendu, d'après les données insérées plus haut, ne devrait contenir que les lignes dont la colonne EstVisibleDansRequete a pour valeur 'oui' (ne trichez pas, cette colonne n'est là que pour illustrer mon propos)
Merci d'avance de votre aide.
Partager