Ich denke, Lamak hat bereits über die SQL erklärt, ich poste ein Beispiel für das Verständnis. Sie können sehen, dass beide SQL die gleichen Ergebnisse liefern. Kopieren und fügen Sie ihn Code in SQL Server und versuchen:
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
Resultset:
Sie können nicht Aggregat innerhalb einer Aggregatfunktion. Dies sollte einen Syntaxfehler auslösen. –
Tja, leider nicht. Ich habe das nicht geschrieben, ich versuche nur zu verstehen, was es tun soll. –
@JaazCole: * "Sie können nicht innerhalb einer Aggregatfunktion aggregieren." * [Anscheinend können Sie] (http://sqlfiddle.com/#!6/4c971/1), zumindest wenn Sie eine verwenden Fensterfunktion. –