2017-02-25 2 views
0

J'essaie d'obtenir le résultat 3, 5 sans compter Dupliquer, valeur NUll et données vides.SQL plus 2 colonnes de données à l'intérieur du compte

select count(distinct no1), count(distinct no1) + count(distinct no2) from abc where no1 
    is not null 

enter image description here

enter image description here

+0

Je ne veux pas inclure null et vide en nombre. veux résultat 3 5 –

Répondre

1

Si vous ne voulez pas nulle et vide, essayez ceci:

select 
    count(distinct case when no1 = '' then null else no1 end), 
    count(distinct case when no1 = '' then null else no1 end) 
    + count(distinct case when no2 = '' then null else no2 end) 
from `tbl` 

Voir Demo ici.

Expliquer: count, sum, avg etc ... Comme ces fonctions d'agrégation ne prendra pas null comme objet calculatoire. Donc, il suffit de tourner la valeur vide à null, ici utilisez case when pour le faire, alors count distinct obtiendra ce que vous voulez.

+0

Cela fonctionne. Merci –

1
select count(distinct no1), count(distinct no1) + (select count(distinct no2) from abc where no2 is not null and no2<>'') from abc where no1 is not null 

Essayez cette

+0

Ne fonctionne pas, il sort erreur "Syntaxe incorrecte près du mot-clé 'select'." et "Syntaxe incorrecte près de ')'." –

+0

Maintenant, j'ai changé la requête, essayez à nouveau –

+0

Ce travail aussi. Merci –