Ich versuche, meinen Geist um eine schreckliche SQL-Abfrage zu wickeln

Kann mir jemand bitte helfen mir zu verstehen was genau diese Abfrage tut?

SELECT pp.Sedol ,MAX(MAX(Id)) OVER ( PARTITION BY pp.Sedol ,MAX(pp.ValueDate) ) PriceId FROM Prices pp GROUP BY pp.Sedol 

Dies ist gleichbedeutend mit:

 with x as ( select Sedol, max(id) max_id, Max(ValueDate) max_valuedate from Prices group by Sedol ) select Sedol, max(max_id) over (partition by Sedol, max_valuedate) PriceId from x; 

Obwohl, wie Lamak sagt, kann ich keine Möglichkeit sehen, dass dies nicht gleich ist

 SELECT Sedol, MAX(Id) PriceId FROM Prices GROUP BY Sedol 

SQL-Geige

Ich denke, Lamak hat bereits über die sql erklärt, ich bin ein Beispiel für das Verständnis. Sie können sehen, dass die Sätze die gleichen Ergebnisse haben. Kopiere Paste unter Code in SQL server und versuche:

 declare @Prices table (Id int, ValueDate datetime, Sedol int) Insert into @Prices values (1,'2014-09-06' ,200), (2,'2014-09-07' , 100), (3,'2014-09-08' , 100), (4,'2014-09-09' , 100), (5,'2014-09-10' , 300), (6,'2014-09-11' , 300), (7,'2014-09-12' , 100), (8,'2014-09-13' , 200), (9,'2014-09-14' , 200), (10,'2014-09-15' , 200) Select * from @Prices -- Your SQL SELECT pp.Sedol ,MAX(MAX(Id)) OVER ( PARTITION BY pp.Sedol ,MAX(pp.ValueDate) ) PriceId FROM @Prices pp GROUP BY pp.Sedol -- Simple SQL mentioned by Lamak SELECT Sedol, MAX(Id) PriceId FROM @Prices GROUP BY Sedol 

Ergebnisse:

Bildbeschreibung hier eingeben