1
votes

Comment filtrer une valeur de colonne lorsqu'une autre colonne contient une valeur dans SQl

Comment puis-je filtrer une valeur dans une colonne si une valeur dans une autre colonne est présente? J'essaie de supprimer tous les C de la colonne CODE s'il est accompagné d'un "-" dans la colonne Description.

CODE |  Description
A      -
A      -
B      -
B      -
C      stuff

Dans la colonne "CODE", je souhaite supprimer les valeurs 'C' si la description = '-'.

Le résultat final ressemblerait au tableau ci-dessous avec le C & - supprimé.

CODE |  Description
A      -
A      -
B      -
B      -
C      stuff
C      -

De notez que la colonne Description est un champ personnalisé utilisant CASE WHEN.

Dans Excel, je créerais simplement une colonne conditionnelle fictive, puis filtrerais «C» et «-». Je ne sais pas comment procéder en SQL.


0 commentaires

3 Réponses :


1
votes

Essayez :

SELECT CODE, Description 
FROM your_table_name 
WHERE (CODE Not Like 'C' And Description Not Like '-');

De plus, je vous conseille de conserver les noms de champ / colonne du même cas, comme «Code» et «Description» ou «CODE» et DESCRIPTION ». C'est une bien meilleure pratique.


0 commentaires

1
votes

Une façon d'exprimer cela utilise not:

where code <> 'C' or Description <> '-')

Cela semble assez proche de la logique telle que vous l'exprimez.

C'est équivalent à:

where not (code = 'C' and Description = '-')

Notez que ces deux solutions supposent que code et description ne sont pas NULL code>. Ils peuvent également être modifiés pour gérer cela, mais cela ne semble pas nécessaire en fonction des données de la question.


0 commentaires

1
votes
    select 
    t1.Code,
    t1.Description
    from MyTable t1
    where t1.code not in (select code from MyTable where Description not like '-') 
    union All
    select * from MyTable
    where Description not like '-'
    order by code asc
primary:result:

0 commentaires