Weder die Where- noch die Having-Klausel akzeptieren Fensterfunktionen – die Qualify-Klausel jedoch schon.
SELECT *
FROM …
QUALIFY ROW_NUMBER() OVER(PARTITION BY … ORDER BY …) <= 3Das Beispiel zeigt eine Top-N-pro-Gruppe-Abfrage: Sie liefert die erste drei Zeilen jeder Partition.
Eine besser unterstützte Syntax für diese Abfrage ermittelt die Fensterfunktion in einer Unterabfrage und wählt die passenden Zeilen in der äußeren Where-Klausel aus.
SELECT *
FROM (SELECT *
, ROW_NUMBER() OVER(PARTITION BY … ORDER BY …) AS rn
FROM …
) AS sq
WHERE sq.rn <= 3Beachte, dass diese Abfrage die Extra-Spalte rn liefert.
Weiterführende Links
Normative Referenzen
Die Qualify-Klausel ist nicht im internationalen SQL-Standard ISO/IEC 9075-2:2023.

