我有一个名为Table1的表,如下所示:
Company Start1 Start2 Start3 End1 End2 End3
-----------------------------------------------------------------------------
010105 1/2/1990 7/30/2001
023123 2/1/1998 2/1/2012 5/15/2008
124557 1/15/2001
436567 1/12/2004 1/12/2010 1/12/2012 1/15/2005 1/15/2010
034534 1/1/2002 1/1/2003 1/1/2004 5/1/2002 5/1/2006 5/1/2004
123456 1/1/2002 1/1/2003 5/1/2006
我正在寻找没有相应End1的Start1或没有相应End2等的Start2的公司。字段中的条目不是完全匹配,但如果有一个条目,则另一个应该还
这可能吗?
上例中的查询将返回以下内容:
023123 (has Start2 but no End2)
124557 (has Start1 but no End1)
436567 (has Start3 but no End3)
123456 (has Start1 but no End1)
(我只需要公司编号,而不是括号中的措辞)
谢谢!
答案 0 :(得分:2)
假设除了列出的3对之外没有其他列,可以使用简单的WHERE
子句来测试每个列中的非NULL
开始日期以及相应的{{ 1}}结束。如果满足三个条件中的任何一个,将返回NULL
。
Company
如果您的空字段实际上是空字符串SELECT DISTINCT Company
FROM Table1
WHERE
(Start1 IS NOT NULL AND End1 IS NULL)
OR (Start2 IS NOT NULL AND End2 IS NULL)
OR (Start3 IS NOT NULL AND End3 IS NULL)
而不是''
,请将空字符串替换为:
NULL
注意,如果(Start1 <> '' AND End1 = '')
列是唯一键或主键,则不需要DISTINCT
。
答案 1 :(得分:1)
SELECT t.Company FROM Table1
WHERE t.start1 IS NOT NULL and t.end1 IS NULL or
t.start2 IS NOT NULL and t.end2 IS NULL or
t.start3 IS NOT NULL and t.end3 IS NULL
如果上述问题无法解决您的问题,请提供更多信息。
答案 2 :(得分:1)
SELECT Company FROM yourtable
WHERE Start1 IS NOT NULL AND End1 IS NULL OR
Start2 IS NOT NULL and End2 IS NULL OR
Start3 IS NOT NULL and End3 IS NULL