Og fantastisk kapitel Indvirkning på vinduesfunktioner :
Antag, at du har:
CREATE TABLE Test (Id INT); INSERT INTO Test VALUES ( 1001 ), ( 1002 );SELECT IdFROM TestWHERE Id =1002 AND ROW_NUMBER() OVER(ORDER BY Id) =1;
Case 1:
Hvis ( Id =1002 ) er først, så hvis ( ROW_NUMBER() OVER(ORDER BY Id) =1 )
Resultat:1002
Case 2:
Hvis ( ROW_NUMBER() OVER(ORDER BY Id) =1 ), så tjek om ( Id =1002 )
Resultat:tom
For at få det, du ønsker, kan du ombryde en vinduesfunktion med CTE/subquery
som i Gordon-svar
:
;WITH cte AS( SELECT t.*, MAX(AVG) OVER (OPDELING EFTER by) SOM gennemsnit FRA avgTemperatures t)SELECT *FROM ctewhere gennemsnit> 19ORDER BY id;
Output:
meget ║ 19 ║ 6 ║║ 3 ║ New-York ║ 15 ║ 12 ║║ 4 ║ New-York ║ 15 ║ 24 ║║ 11 ║ Miami ║ 28 ║ 1 ║║ 12 ║ Miami ║ 25 ║ 4 ║║ 13 ║ Miami ║ 21 ║ 12 ║║ 14 ║ Miami ║ 22 ║ 15 ║║ 15 ║ Miami ║ 20 ║ 24 ║╚═════╩══════════╩═════╩════ ═════╝