2017-10-10 4 views
0

J'ai le tableau de données employé suivant. J'essaie de créer une requête de sélection selon la logique suivante: if status = 'X', n'affiche que les enregistrements ayant le statut = 'X' sinon if (status not = 'X' et status = espaces), afficher tout enregistrementsUtilisation de la logique Include-Exclude dans SQL

J'ai essayé toutes les combinaisons possibles pour obtenir le résultat mais j'ai échoué. Quelqu'un pourrait-il me suggérer comment effectuer cela?

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

Je ne sais pas ce que cela a à voir avec COBOL. – SaggingRufus

+0

Bienvenue sur stackoverflow.com. Veuillez prendre le temps de lire les [pages d'aide] (https://stackoverflow.com/help), en particulier les sections intitulées ["Quels sujets puis-je poser à propos d'ici?"] (Https://stackoverflow.com/help/ sur le sujet) et ["Quels types de questions devrais-je éviter de poser?"] (https://stackoverflow.com/help/dont-ask). Aussi s'il vous plaît prendre le [tour] (https://stackoverflow.com/tour) et lire sur [Comment poser de bonnes questions] (https://stackoverflow.com/help/how-to-ask). Enfin, apprenez comment créer un [exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve). – cschneid

+0

@saggingrufus ... Je vais utiliser cette requête dans un gestionnaire/module COBOL-DB2. There4 mentionné l'étiquette :) –

Répondre

0

Ce que vous voulez faire ne peut pas être réalisé dans une seule requête. Vous devrez écrire plusieurs requêtes select en fonction des conditions Where.

Dans Cobol, déplacez votre entrée vers les variables d'hôte de stockage actives WS-AGE et WS-STATUS. Puis écrivez vos requêtes comme:

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