2017-10-10 3 views
0

Ich habe folgende Mitarbeiter Datentabelle. Ich versuche, eine Select-Abfrage basierend auf der folgenden Logik zu erstellen: wenn Status = 'X', nur Datensätze mit Status = 'X' anzeigen sonst wenn (Status nicht = 'X' und Status = Leerzeichen), alle anzeigen AufzeichnungenVerwenden Sie Include-Exclude-Logik in SQL

Ich habe alle möglichen Kombinationen versucht, um das Ergebnis zu erhalten, aber gescheitert. Könnte mir bitte jemand vorschlagen, wie man das macht?

EmpNo | Name |Status | Age 
================================ 
11  | Aron | A  | 25 
22  | Barry | X  | 26 
33  | Carol | A  | 27 
44  | Danny | I  | 28 
55  | Emmy | X  | 29 
66  | Fanny | I  | 30 
77  | Garry | A  | 25 
88  | Harry | X  | 26 
+1

Ich bin mir nicht sicher, was das mit COBOL zu tun hat. – SaggingRufus

+0

Willkommen bei stackoverflow.com. Bitte nehmen Sie sich etwas Zeit, um die [Hilfeseiten] (https://stackoverflow.com/help) zu lesen, insbesondere die Abschnitte mit dem Namen ["Welche Themen kann ich hier fragen?"] (Https://stackoverflow.com/help/) on-topic) und ["Welche Art von Fragen sollte ich vermeiden zu fragen?"] (https://stackoverflow.com/help/dont-ask). Nimm auch die [Tour] (https://stackoverflow.com/tour) und lies über [wie man gute Fragen stellt] (https://stackoverflow.com/help/how-to-ask). Zuletzt erfahren Sie, wie Sie ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) erstellen können. – cschneid

+0

@saggingrufus ... Ich verwende diese Abfrage in einem COBOL-DB2-Handler/Modul. There4 erwähnt das Tag :) –

Antwort

0

Was Sie tun möchten, kann nicht in einer einzigen Abfrage erreicht werden. Sie müssen mehrere ausgewählte Abfragen abhängig von Where Bedingungen schreiben.

Verschieben Sie in Cobol Ihre Eingabe in die Arbeitsspeicherhostvariablen WS-AGE und WS-STATUS. Dann schreiben Sie Ihre Abfragen als:

If Age > Zeroes and Status > Spaces 
    Select EmpNo, Name, Age, Status 
     into :host-variable1, :hv2, :hv3, :hv4 
     from Table 
     Where Age=:WS-AGE 
      and Status=:WS-STATUS 
Else 
    If Age > Zeroes 
     Select EmpNo, Name, Age, Status 
     into :host-variable1, :hv2, :hv3, :hv4 
     from Table 
     Where Age=:WS-AGE 
    Else 
     Select EmpNo, Name, Age, Status 
     into :host-variable1, :hv2, :hv3, :hv4 
     from Table 
    End-if 
End-if 
Verwandte Themen