2014-09-29 9 views
5

Kann mir bitte jemand helfen zu verstehen, was genau diese Abfrage tut?Versucht, mich um schreckliche SQL-Abfrage zu wickeln

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

Sie können nicht Aggregat innerhalb einer Aggregatfunktion. Dies sollte einen Syntaxfehler auslösen. –

+0

Tja, leider nicht. Ich habe das nicht geschrieben, ich versuche nur zu verstehen, was es tun soll. –

+0

@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. –

Antwort

5

Dies entspricht:

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 als Lamak sagt, ich kann nicht jede mögliche Weise sehen dies nur gehen nicht auf

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

SQL Fiddle

gleichwertig
1

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:

enter image description here

Verwandte Themen