如何查看字段条目是否在另一个字段中有相应的条目?

时间:2013-03-04 18:16:50

标签: sql ms-access

我有一个名为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)

(我只需要公司编号,而不是括号中的措辞)

谢谢!

3 个答案:

答案 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