2017-05-23 9 views
-1

Ich habe Daten für verschiedene Institutionen mit verschiedenen Währungen, Daten und entsprechenden Werten. Benötigen Sie eine Abfrage Spalte ‚Erforderliche Werte‘, die von den einzelnen Organen und WährungSQL Server-Werte entsprechend max Datum gruppiert von zwei Werten

Institution Name Currency Date Values  Required Values 

Institution 1    CAD   date1 100      100 
Institution 1    USD   date2 200     200 
Institution 2    CAD   date3 150     250 
Institution 2    CAD   date4 300     250 
Institution 2    CAD   date5 250     250 
Institution 2    USD   date6 300     300 
Institution 3    CAD   date7 400     400 
Institution 3    USD   date8 50    100 
Institution 3    USD   date9 75    100 
Institution 3    USD   date10 100     100 
+0

Was haben Sie versucht? Welche Fehler bekommst du? Zeigen Sie etwas Mühe .... – scsimon

+0

Ich versuchte innere Verbindung der Tabelle mit max Datum. Ich erhalte das richtige Ergebnis, aber die Abfrage ist zu lang, weil ich nur einen Teil der Tabelle verwende, aber es gibt auch andere Spalten. Ich suchte nur nach einer besseren Möglichkeit, die Abfrage zu schreiben. Wenn Sie nicht helfen können, ist das in Ordnung, weil ich eine funktionierende Abfrage habe –

+0

Fwiw, ich denke, diese Frage wurde in einer anderen StackOverflow Frage https://StackOverflow.com/Questions/755918/Simple-Query-To-Grab-Max-Values- beantwortet für-jedes-ID. Zumindest erwähnt die akzeptierte Antwort ein allgemeines Muster für das Problem, das Sie in Abfragen haben - das "gruppenweise Maximum" oder den Maximalwert BY einer Gruppe (von Werten). – RoboBear

Antwort

0

Verwenden row_number() gruppiert max Datum entsprechen zu erhalten:

select t.* 
from (select t.*, 
      row_number() over (partition by InstitutionName, Currency 
           order by date desc 
           ) as seqnum 
     from t 
    ) t 
where seqnum = 1; 
+0

Danke Gordon. Diese Abfrage erhält nur Werte, die seqnum = 1 entsprechen. Ich möchte, dass die Spalte alle Spalten und die Spalte mit den erforderlichen Werten enthält, um Werte zu haben, die seqnum = 1 entsprechen, wenn seqnum <> 1 –

+0

@ M.A. . . . Sie sollten * eine andere * Frage stellen. Geben Sie Beispieldaten und gewünschte Ergebnisse an. Ihre Interpretation ist definitiv nicht, was ich denke, die Frage stellt sich. –