2009-10-28 72 views
1

我有一個返回值設置類似下面的一個結果查詢:消除空值的組從結果集

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 

我不想1-3行,因爲它們的綜合四分之一計數爲NULL 。但我確實需要3-6行,因爲至少有一個來自同一Quarter的Count不是NULL。

如何來自上述結果設定爲這一個:

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

感謝。

+0

是第1-3行,意味着2009年第一季度? – Mikeb 2009-10-28 17:19:33

+0

對不起,只是修好了。 – twh 2009-10-28 17:20:04

+0

如果您向我展示您的查詢,我會盡力幫助您調整您的查詢。 – 2009-10-28 17:20:14

回答

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

它的工作原理,謝謝。 – twh 2009-10-29 17:53:43

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

您可以利用的事實,聚合函數忽略空和做類似:

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 

可能有更好的執行計劃比EXISTS - 它可能不是。