2017-12-21 13 views
0

Das mag etwas verwirrend sein, also werde ich versuchen, detailliert zu sein. Ich muss mehrere Monate täglicher Datensätze basierend auf einer bestimmten Variablen abfragen. In diesem Fall ein Dateiname. Es gab mehrere fehlgeschlagene Dateien, die erneut ausgeführt wurden, und die erneute Ausführung enthält die ursprüngliche Jobausführungsnummer unter dem neuen Dateinamen. Zum Beispiel:Abfrage auf eine Variable, die einen bestimmten Bereich enthält

ausführen 4145 fehlgeschlagen. Dateiname "ORIGINALFILENAME" Lauf 4150 Dateiname wird aussehen wie "YYYYMMDDHHMMSS_4145_ORIGINALFILENAME"

Es gibt 50+ fehlgeschlagene Dateien im Laufe von mehreren Monaten. Gibt es eine Möglichkeit, meine where-Anweisung so zu erstellen, dass sie sowohl die fehlgeschlagenen Läufe (einfach über status_code = 'FAILURE') als auch die Wiederholungen zurückgibt? Ich stelle mir etwas wie where file_name like '%_(select run_number where status_code = 'FAILURE')_ORIGINALFILENAME

vor
+2

Hallo und willkommen zu SO. Sicher könnte das gemacht werden. Aber wir brauchen einige Details, um zu helfen. Dinge wie Spaltennamen und Beispieldaten. Hier ist ein großartiger Ort, um anzufangen. http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+1

Hinweis '_' in einer Like-Klausel ist * ein einzelnes Zeichen * verwenden '[_]' für das '_' Zeichen –

Antwort

0

Das Zeichen% funktioniert für beliebige oder keine Zeichen. So

where file_name like '%ORIGINALFILENAME' 

wird für die Fehler arbeiten und die reruns

0

Dieses Skript zurückgeben alle Tupel, die status_code = ‚Versagen‘ enthalten und in denen die datei_name enthält die Unterkette „_ORIGINALFILENAME“.

SELECT file_name FROM tblYourTable 
    WHERE status_code = 'FAILURE' 
    AND file_name LIKE '%[_ORIGINALFILENAME]%' 

aber ... auf die Anforderung zweiten Blick scheint zu sein: "... Aussage, so dass er zurückkehren wird sowohl die ausgefallenen Läufe (leicht über status_code =‚Versagen‘geschehen) sowie die Wiederholungen ... ", die, wenn ich das richtig verstanden bedeutet das Prädikat anzupassen entweder Szenario also zurück:

SELECT file_name FROM tblYourTable 
    WHERE status_code = 'FAILURE' 
    OR file_name LIKE '%[_ORIGINALFILENAME]%' 
+0

Obwohl möglicherweise richtig, wäre es nett, wenn die Antwort eine Erklärung enthielt, warum es das Problem löst. – Jacobm001

Verwandte Themen