Scénario:SQL Server: SELECT lignes avec MAX (colonne A), MAX (colonne B), DISTINCT par des colonnes liées
Tableau A
MASTERID, Ajouté Date, Ajouté par, mise à jour Date, Mis à jour par,
1, 1/1/2010, 'Fred', null, null
2, 1/2/2010, 'Barney', 'M. Slate », 1/7/2010
3, 1/3/2010, 'Noname', null, null
Tableau B
MASTERID, Ajouté Date, Ajouté par, mise à jour Date, Mis à jour par,
1 , 1/3/2010, 'Wilma', 'Le Grand Kazoo', 1/5/2010
2, 1/4/2010, 'Betty', 'Dino', 1/4/2010
Tableau C
MasterID, Date d'ajout, Ajouté par, Date de mise à jour, Mis à jour par,
1, 1/5/2010, 'Cailloux', null, null
2, 1/6/2010, 'BamBam', null, null
Tableau D
MASTERID, Date ajoutée, ajoutée par, actualisée Date, actualisée By,
1, 02.01.2010, 'Noname', null, null
3, 1/4/2010, 'Wilma', null, null
Je dois retourner la date d'ajout maximale et l'utilisateur correspondant, et la date mise à jour maximale et l'utilisateur correspondant pour chaque enregistrement distinct lorsque les tables A, B, C & D sont UNION, à savoir:
1, 1/5/2010, 'Cailloux', 'Le Grand Kazoo', 1/5/2010
2, 1/6/2010, 'BamBam ', 'M. Slate », 1/7/2010
3, 1/4/2010, 'Wilma', null, null
Je sais comment faire avec une date/utilisateur par ligne, mais avec deux est au-delà de moi. Le SGBD est SQL Server 2005. Solution T-SQL préférée.
Merci à l'avance,
Dave
Merci Nate !! Pour SQL Server, j'ai dû spécifier un nom de table dérivé pour les SELECTs internes. Dave SELECT added.MasterID, added.AddedDate, added.AddedBy, modif.UpdatedDate, modif.UpdatedBy DE ( SELECT a.MasterID, a.AddedDate, à partir de b.AddedBy ( SELECT MASTERID, Max (AddedDate) comme AddedDate dE ( SELECT * FROM TableA UNION ALL SELECT * FROM TableB UNION ALL SELECT * FROM TableC UNION ALL SELECT * FROM déposé) a1 - (ajouté ce) GROUP BY MASTERID ) un ... – Dave