2017-06-23 3 views
1

enter image description hereSql wie MAX und MIN history auszukommen mit Benutzer entsprechenden

ich diese Tabelle mit HistoryDate und Benutzer haben. Ich brauche Max (Historydate) abzufragen, Benutzer correspondind zu MaxDate, Min (HistoryDate), Benutzer zu MinDate die jeweils für ReviewID wie diese

ModifiedDate |ModifiedBy| CreatedDate | CreatedBy |ReviewId 
    2/16/17 12:58 | Susan | 2/7/17 15:39 | John  | 1 
    2/15/17 13:25 | Sam  | 2/9/17 20:27 | John  | 2 

Ich bin in der Lage, es fragen Tabellenvariable verwenden, aber auf andere Weise fragen, es bekommen.

+0

Was möchten Sie tun, wenn zwei Bewertungen das gleiche Verlaufsdatum haben? Oder möchtest du posten, was du getan hast, um es in eine Tabellenvariable zu bekommen? – Mic

+0

Abhängig von ReviewId, wenn max oder min zusammen mit User angezeigt wird. Hauptzweck ist, Min Date und User als CreatedDate und CreatedBy und MaxDate und User als Neuste ModifiedDate und ModifiedBy für jede ReviewId anzuzeigen und den Rest der Daten zu ignorieren. – SumanCha

Antwort

0

Das ist für mich gearbeitet.

SELECT ModifiedDate, ModifiedBy, CreatedDate ,CreatedBy, crt.ReviewID 
    FROM (SELECT HistoryDate CreatedDate, ReviewId, UserId CreatedBy FROM HistoryTable 
     WHERE HistoryDate in (SELECT min(HistoryDate) FROM HistoryTable GROUP BY ReviewID)) crt 
INNER JOIN 
    (SELECT HistoryDate ModifiedDate, ReviewID, UserId ModifiedBy FROM HistoryTable 
     WHERE HistoryDate in (SELECT Max(HistoryDate) FROM HistoryTable GROUP BY ReviewID)) Modi 
ON crt.ReviewId = Modi.ReviewID 
     ORDER BY crt.ReviewID 
0

Probieren Sie Sub-Abfragen in der FROM Klausel, um jedes min und max zu erhalten. Um nur die min/max für jede Bewertung zu erhalten, müssen Sie GROUP BY ReviewID wie so verwenden:

SELECT max.date AS maxDate, max.user AS maxUser, min.date AS minDate, 
min.user AS minUser 
FROM (
    (SELECT MAX(HistoryDate) date, user, ReviewID 
    FROM HistoryTable 
    GROUP BY ReviewID) max 
     JOIN 
    (SELECT MIN(HistoryDate) date, user, ReviewID 
    FROM HistoryTable 
    GROUP BY ReviewID) min 
     ON max.ReviewID = min.ReviewID 
) 
+0

Dies funktioniert nicht. – SumanCha

+0

@SumanCha war da ein Fehler? oder waren die Ergebnisse falsch? Bitte geben Sie weitere Informationen – walley

+0

Es gab einen Fehler. Ich machte wenige Änderungen und es funktionierte – SumanCha