Bonjour à tous,
Je viens poser ma question ici car après plusieurs heures de recherche, je ne trouve toujours pas de solution à mon problème (bien que je sois déjà parvenu à optimiser mon résultat..)
Voici ma demande: Je travail sur un ERP, et j’essaie d'élaborer une requête SQL qui me permet de faire apparaître selon un critère deux affichages différents.
Dans un cas je veux pouvoir avoir une liste de codes et des comptes comptables qui ont été alimentés apparaissent (donc deux colonnes d'informations). Et dans l'autre cas, uniquement des codes et non les comptes (une seule colonne)
Ci-joint un exemple de construction de mes deux tables:
C. Codes
16TTTO
16LLLO
16AAAO
CA. Comptes
606
607
608
Un exemple d'alimentation des données et de ce que je voudrai obtenir avec ma requête:
CAS 1
Code Compte
16TTTO 606
16TTTO 607
16LLLO 606
16LLLO 607
16LLLO 608
16AAAO 606
CAS 2
CODE
16TTTO
16LLLO
16AAAO
J'ai un critère que je peux rentrer, si je mets "Oui", j'ai le détails complet, et si je mets "Non", j'obtiens l'état simplifié cas 2.
Ma question étant est-ce possible d'avoir ce résultat sans utiliser 2 requêtes différentes?
Pour le moment j'ai réussi à obtenir un compromis entre les deux, c'est à dire que j'arrive à avoir le résultat du CAS 1 sans encombre, et dans le cas 2 j'obtiens ça:
CAS2
Code Compte
16TTTO Consolidé
16LLLO Consolidé
16AAAO Consolidé
Voici le code que j'utilise:
Le %1% correspond au critère que l'on peut rentrer. Le mot "Consolidé" est utilisé ici pour faire un regroupement par la suite à l'aide du GROUP BY et du coup avoir dans le CAS 2 uniquement 3 lignes de résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT C.Codes, (CASE when %1%='1' then 'Consolidé' else CA.Comptescomptable) FROM CODES C, COMPTA CA GROUP BY C.Codes, (CASE when %1%='1' then 'Consolidé' else CA.Comptescomptable)
Donc ce que je souhaiterai si c'est possible, c'est bien d'avoir une seule colonne avec les codes et masquer la colonne compte lorsque je remplis mon critère d'exclusion dans le cas 2.
Je vous remercie par avance de vos retours sur ce sujet,
Cordialement Fritou
Partager