2016-04-04 6 views
0

Basierend auf den Rohdaten unten und dem erwarteten Ergebnis benötige ich Hilfe bei der richtigen Abfrage.Max & Distinct basiert auf mehreren Feldern

Grundsätzlich brauche ich diese Daten basierend auf max (ID), aber beachten Sie, dass RATING und TYPE-Feld könnte anders sein, damit Group By würde nicht funktionieren.

Vielen Dank.

Raw Data & Expected Result

+1

Es ist großartig, Beispieldaten und erwartete Ausgabe bereitzustellen, aber bitte nicht als Bilder zur Verfügung stellen. Lass es das Copy'n'Pastable sein. Am besten wäre ein Testszenario mit 'CREATE TABLE #test ...' oder 'DECLARE @test TABLE (...' mit Ihren Testwerten eingefügt - oder einem [Fiddle] (http://www.sqlfiddle.com) – Shnugo

+1

hi @Shnugo bemerkte, würde dies im Hinterkopf behalten. – lucas

Antwort

2

Sie scheinen die höchste ID für jede NumId wollen. Sie können dies tun mit row_number():

select t.* 
from (select t.*, row_number() over (partition by NumId order by id desc) as seqnum 
     from t 
    ) t 
where t.seqnum = 1; 
0

Verwenden NOT EXISTS eine Zeile zurück, wenn keine andere Zeile die gleiche NumTitle hat aber einen höheren ID-Wert:

select t1.* 
from tablename t1 
where not exists (select 1 from tablename t2 
        where t2.NumTitle = t1.NumTitle 
        and t2.ID > t1.ID) 

Oder JOIN Version:

select t1.* 
from tablename t1 
join (select NumTitle, MAX(ID) from tablename group by NumTitle) t2 
    on t2.NumTitle = t1.NumTitle and t2.ID = t1.ID 
Verwandte Themen