2009-10-28 8 views
1

J'ai une requête qui renvoie un jeu de résultats similaire à celui ci-dessous:Éliminer groupe de NULLs du jeu de résultats

Quarter | Count 
    ------- | ----- 
1 Q2 2009 | NULL 
2 Q2 2009 | NULL 
3 Q2 2009 | NULL 
4 Q3 2009 | 26 
5 Q3 2009 | 27 
6 Q3 2009 | NULL 

Je ne veux pas les lignes 1-3, parce que leur combiné quart-Count est NULL . Mais je veux les lignes 3-6 car au moins un compte du même trimestre n'est pas NULL.

Comment se fait-je du jeu de résultats ci-dessus à celui-ci:

Quarter | Count 
    ------- | ----- 
1 Q3 2009 | 26 
2 Q3 2009 | 27 
3 Q3 2009 | NULL 

Merci.

+0

Les lignes 1 à 3 sont-elles censées être le premier trimestre de 2009? – Mikeb

+0

Désolé, juste réparé. – twh

+0

Je vais essayer de vous aider à ajuster votre requête, si vous me montrez votre requête. –

Répondre

2
SELECT 
    Quarter, Count 
FROM 
    MyTable M 
WHERE 
    EXISTS (SELECT * 
     FROM MyTable m2 
     WHERE m2.Count IS NOT NULL AND m.Quarter = m2.Quarter) 
+0

Cela fonctionne, merci. – twh

2
SELECT * 
FROM mytable mo 
WHERE EXISTS 
     (
     SELECT NULL 
     FROM mytable mi 
     WHERE mi.quarter = mo.quarter 
       AND mi.count IS NOT NULL 
     ) 
1

Vous pouvez profiter du fait que les fonctions globales ignorent nulle et faire quelque chose comme:

SELECT * FROM myTable m1 inner join 
(
SELECT quarter as q2 from myTable 
GROUP BY quarter 
HAVING sum(count) is not null 
) as m2 on m1.quarter = m2.q2 

Ce qui pourrait avoir un meilleur plan d'exécution d'une EXISTE - il ne pourrait pas.

Questions connexes