2016-07-06 1 views
0

Ich bin mit der Auswahl einer einzelnen Zeile ein Problem haben, wenn es mehrere Einträge für ein „CallID“SQL Max Wert der Spalte zu wählen, welche Zeile ausgewählt ist

In diesem Fall gibt es zwei Reihen ausgewählt sind:

Assignee   maxTime 
Jim Smith   11:31:05 
James Smith  17:50:16 

Ich möchte nur eine einzelne Zeile auswählen, die die größte Zeit hat.

Ausgang Ich möchte:

Assignee   maxTime 
James Smith  17:50:16 

Dies ist mein Code:

select Assignee, MAX(TimeResolv) as maxTime 
from heat8..asgnmnt 
where callid ='00539265' 
    and GroupName like '%cs%' 
Group by Assignee 

Hilfe würde geschätzt.

+1

Sie können TOP 1 und Auftrag von maxTime desc – mxix

+0

Beispieltabellendaten auch zeigen. (Der, der das angegebene Ergebnis gibt.) – jarlh

+0

Das hat funktioniert- danke. – obizues

Antwort

2

können Sie verwenden TOP:

SELECT TOP 1 * 
FROM heat8..asgnmntt t 
ORDER BY t.timeResolv DESC 

oder weniger effizient mit NOT EXISTS():

SELECT * FROM heat8..asgnmntt t 
WHERE NOT EXISTS(SELECT 1 FROM heat8..asgnmnt s 
       WHERE s.timeResolv > t.timeResolv) 

Oder mit Fensterfunktion ROW_NUMBER():

SELECT s.Assignee, s.TimeResolv 
FROM (
    SELECT t.*, 
      ROW_NUMBER() OVER(ORDER BY t.timeResolv) as rnk 
    FROM heat8..asgnmntt t) s 
WHERE s.rnk = 1 

ROW_NUMBER() ist auch gut, es zu tun mit eine Abfrage für Ergebnisse pro Gruppe.

0

Sie können eine Unterabfrage verwenden. Ihre Unterabfrage wird genau wie Ihre aktuelle Abfrage aussehen, aber Sie müssen die oberste 1 daraus auswählen.

select TOP 1 Assignee, (TimeResolv) as maxTime 
FROM (
    select Assignee, MAX(TimeResolv) as maxTime 
    from heat8..asgnmnt 
    where callid ='00539265' 
    and GroupName like '%cs%' 
    Group by Assignee 
) 
ORDER BY TimeResolv DESC 

EDIT: keine Notwendigkeit für Unterabfrage, aber wenn Sie den gleichen Code verwenden möchten Sie oben für eine gute Lesbarkeit haben oder es macht Sinn für Sie. Sie können es weiterhin mit dieser Methode verwenden.

+1

Kein Bedarf für Unterabfrage – sagi

+0

Ich aktualisierte die Antwort. Keine Notwendigkeit für eine Unterabfrage, aber manchmal ist es schön für die Lesbarkeit, wenn Sie gerade mit SQL beginnen. – Kyle

Verwandte Themen