我需要从数据集中选择观察结果,以排除缺少某些值但忽略其他值的行。例如,我有以下变量:
A,dateA,B,dateB,C,dateC
我需要排除A不为空的行,但是缺少dateA值或者对于B不是null,但是缺少dateB值或者对于C而言不是null,但缺少dateC值。另外,因为我的变量是结构化的,所以它们可以是空值,我一直在使用以下代码来识别" null"观察:
WHERE dateA > '';
我不确定要在我的select语句中放入什么来完成此任务。任何帮助将非常感激!谢谢!
这里的编辑将是一些示例数据:(抱歉尴尬的格式化)
Obs ---- A ----- dateA
1 -------- 3 ----- 2002-02-13 00:00:00
2 -------- 8 ----- 2009-12-19 00:00:00
3 -------- 0
4 -------- 7
我想要的结果是选择观察1,2和3,但不是4,因为它缺少dateA的值,但是有一个A值.3应该包含,因为它虽然缺少一个值对于dateA,它的A值为0.我还有其他变量,B,dateB,C和dateC需要以相同的方式选择。
答案 0 :(得分:0)
这是獾吗?
SELECT *
FROM table1 t1
WHERE (a>0 AND dateA > '')
OR (b>0 AND dateB > '')
OR (c>0 AND dateC > '');
还是这个?
SELECT *
FROM table1 t1
WHERE (a=0 OR (a>0 AND dateA>''))
AND (b=0 OR (b>0 AND dateB>''))
AND (c=0 OR (c>0 AND dateC>''));
答案 1 :(得分:0)
要包含这些行,我们会这样做:
WHERE (A IS NOT NULL AND A != 0 AND dateA > '')
OR (B IS NOT NULL AND B != 0 AND dateB > '')
OR (C IS NOT NULL AND C != 0 AND dateC > '');
要排除这些,我们可以简单地使用NOT:
WHERE NOT(
(A IS NOT NULL AND A != 0 AND dateA > '')
OR (B IS NOT NULL AND B != 0 AND dateB > '')
OR (C IS NOT NULL AND C != 0 AND dateC > '')
);
编辑:在问题澄清后更新。