2017-12-19 2 views
0

Ich habe eine Unterabfrage, die die folgendeAbfragen einer Tabelle für ein Minimum auf der Basis des größten einer zweiten Spalte

PreviousRateCode hat, CurrentRateCode, PreviousReportDate, CurrentReportDate, Transaction.

Die Daten in meiner Unterabfrage sieht aus wie

enter image description here

Wie kann ich die Ergebnisse unter Abfrage der Kleinste „RecentDerogMonths“ auf dem größten „WorstDerogLevel“ Basis zu bekommen? Es gibt eine zusätzliche Spalte, die ich weggelassen habe, die eine customerID hat, also brauche ich die kleinsten "RecentDerogMonths" basierend auf der größten "WorstDerogLevel" für jeden Kunden, und dies ist eine Unterabfrage von einer größeren Auswahl, also was ich brauche ist etwa

Select Lowest Months by highest level 
From (The result above) 
Group by CustomerID 

Antwort

0

Ist das was du willst?

select top 1 t.* 
from t 
order by WorstDerogLevel desc, RecentDerogMonths asc; 

Wenn Sie alle passenden Zeilen möchten, dass die Bedingung dann treffen select top (1) with ties verwenden.

EDIT:

pro Kunde, verwenden Sie Fensterfunktionen. Ein Verfahren verwendet eine Unterabfrage, aber hier ist ein cooler Trick:

select top (1) with ties t.* 
from t 
order by row_number() over (partition by customerid order by WorstDerogLevel desc, RecentDerogMonths asc); 
+0

Leider habe ich weggelassen, gibt es eine zusätzliche Spalte, die ich ausgelassen, dass eine customerID hat, also muss ich die Kleinste „RecentDerogMonths“ auf der Grundlage der größten „WorstDerogLevel "für jeden Kunden. Also was du hast, ist was ich brauche, aber ich bin mir nicht sicher, wie ich es gruppieren soll, da ich die ganze Reihe brauche. –

Verwandte Themen