我有一个查询,它返回一个类似于下面的结果集:
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。
我如何从上面的结果集得到这个结果集:
Quarter | Count
------- | -----
1 Q3 2009 | 26
2 Q3 2009 | 27
3 Q3 2009 | NULL谢谢。
发布于 2009-10-29 01:26:34
SELECT
Quarter, Count
FROM
MyTable M
WHERE
EXISTS (SELECT *
FROM MyTable m2
WHERE m2.Count IS NOT NULL AND m.Quarter = m2.Quarter)发布于 2009-10-29 01:25:38
SELECT *
FROM mytable mo
WHERE EXISTS
(
SELECT NULL
FROM mytable mi
WHERE mi.quarter = mo.quarter
AND mi.count IS NOT NULL
)发布于 2009-10-29 02:23:37
您可以利用聚合函数忽略null这一事实,并执行如下操作:
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更好的执行计划--也许不是。
https://stackoverflow.com/questions/1638738
复制相似问题