首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从结果集中消除一组空值

从结果集中消除一组空值
EN

Stack Overflow用户
提问于 2009-10-29 01:17:58
回答 3查看 166关注 0票数 1

我有一个查询,它返回一个类似于下面的结果集:

代码语言:javascript
复制
   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行,因为同一季度至少有一个计数不为NULL。

我如何从上面的结果集得到这个结果集:

代码语言:javascript
复制
   Quarter  | Count
   -------  | -----
1   Q3 2009 | 26
2   Q3 2009 | 27
3   Q3 2009 | NULL

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-29 01:26:34

代码语言:javascript
复制
SELECT
    Quarter, Count
FROM
    MyTable M
WHERE
    EXISTS (SELECT *
        FROM MyTable m2
        WHERE m2.Count IS NOT NULL AND m.Quarter = m2.Quarter)
票数 2
EN

Stack Overflow用户

发布于 2009-10-29 01:25:38

代码语言:javascript
复制
SELECT  *
FROM    mytable mo
WHERE   EXISTS
        (
        SELECT  NULL
        FROM    mytable mi
        WHERE   mi.quarter = mo.quarter
                AND mi.count IS NOT NULL
        )
票数 2
EN

Stack Overflow用户

发布于 2009-10-29 02:23:37

您可以利用聚合函数忽略null这一事实,并执行如下操作:

代码语言:javascript
复制
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更好的执行计划--也许不是。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1638738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档