Ich habe die folgende virtuelle Spalte aus einem Aggregat über eine sortierte Partition generiert:
MIN(picture_id) OVER ( PARTITION BY [360_set] ORDER BY picture_id ASC )
Wenn ich das jedoch ausführe, erhalte ich Folgendes.
Msg 11305, Level 15, State 10, Line 12
The Parallel Data Warehouse (PDW) features are not enabled.
Hier wird es jedoch interessant, ohne eine Sortierreihenfolge auf der Partition funktioniert es:
MIN(picture_id) OVER ( PARTITION BY [360_set] )
Außerdem arbeitet ROW_NUMBER()
eine Fensterfunktion (keine Aggregatfunktion) mit einer expliziten Reihenfolge auf der Partition.
ROW_NUMBER() OVER ( PARTITION BY [360_set] ORDER BY picture_id ASC )
Wie kommt es, dass die gewünschte Aussage nicht funktioniert? Wo ist das dokumentiert? Die Versionsinformationen wurden angefordert, dies ist, was ich in Hilfe → Über.
Microsoft SQL Server Management Studio 10.0.5512.0
Microsoft Analysis Services Client Tools 10.0.5500.0
Microsoft Data Access Components (MDAC) 6.1.7601.17514
Microsoft MSXML 3.0 6.0
Microsoft Internet Explorer 9.10.9200.16635
Microsoft .NET Framework 2.0.50727.5472
Operating System 6.1.7601
Das Ergebnis von SELECT @@VERSION
istMicrosoft SQL Server 2008 (SP3) - 10.0.5512.0 (X64) Aug 22 2012 19:25:47 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)
[360_set]
, oder ist dieser Teil irrelevant? Aus Ihrem Kommentar geht hervor, dass die von Ihnen angegebene Formel nur dann wie die Textbeschreibung funktioniert, wenn die Sequenz keine Lücken aufweist. Welche wollen Sie?
MIN
, ändert jedoch die Zeilen in dem Frame, über den ausgeführt MIN
wird.
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
. Das Fenster enthält also nur Werte mit picture_id
Werten, die kleiner oder gleich denen in der aktuellen Zeile sind.