Wie bekomme ich N Datensätze vor gegebenem?

9

Wie bekomme ich N Datensätze vor gegebenem einen?

Ich habe die folgende Tabellenstruktur:

%Vor%

Gibt es eine Möglichkeit, die N Datensätze vor jedem Fehler zu bekommen und alle solche Datensätze zu verbinden? Das erwartete Ergebnis für N = 2 ist also

%Vor%

Geige

    
Brans 10.07.2015, 14:15
quelle

4 Antworten

3

Sie müssen eine Zeilennummernspalte erstellen, wenn Ihre IDs nicht ohne Lücken erhöht werden. Dann können Sie einen einfachen Join verwenden, um den vorherigen N zu finden. Ihr vorheriges N könnte sich überlappen ... also müssen Sie distinct hinzufügen, wenn Sie keine Duplikate wollen.

%Vor%

Wenn einer der vorherigen @N Datensätze ein Fehler ist, wird der 'Fehler' Datensatz NICHT angezeigt. Dies müsste geändert werden, wenn Sie möchten, dass diese einbezogen werden. Entfernen Sie einfach die Zeile and Prev.Message <> 'Error' .

    
Brian Pressler 10.07.2015, 14:35
quelle
0

Sie können dies mit cross apply tun. Die Logik unterscheidet sich ein wenig von typischen Anwendungen, weil Sie nur die Datensätze aus der Unterabfrage cross apply wollen:

%Vor%

Für diejenigen, die geneigt sind, gibt es auch eine Methode, die Fensterfunktionen verwendet, aber es ist etwas mühsamer. Führen Sie eine umgekehrte kumulative Summe von Error Records aus, um Werte vor einem bestimmten Fehler zu identifizieren. Zählen Sie diese auf und wählen Sie die gewünschten aus:

%Vor%

Beachten Sie, dass der Filter zwischen 2 und 3 liegt, weil 'Error' den Wert 1 hat.

    
Gordon Linoff 10.07.2015 14:26
quelle
0

Holen Sie alle Zeilen, die "Fehler" sind, und verbinden Sie sich mit der vorherigen ID. Angenommen, Ihre IDs sind fortlaufend. Wenn sie keine fortlaufende ID mit der Hilfe oder ROW_NUMBER () erhalten.

Sie können dies versuchen:

%Vor%     
mxix 10.07.2015 14:30
quelle
0

Dies wäre ein bisschen einfacher, wenn Sie ein Identitätsfeld für ID verwenden würden, dann hätten Sie fortlaufende Nummern, aber Sie können diese Methode verwenden. Ich reihe die Zeilen und gebe dann die vor dem Fehler zurück.

%Vor%     
Wyatt Shipman 10.07.2015 14:38
quelle

Tags und Links