1

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

我正在寻找任何具有 Start1 而没有相应 End1 或 Start2 没有相应 End2 的公司,等等。字段中的条目不会完全匹配,但如果一个有条目,另一个也应该。

这可能吗?

上面示例中的查询将返回以下内容:

023123 (has Start2 but no End2)
124557 (has Start1 but no End1)
436567 (has Start3 but no End3)
123456 (has Start1 but no End1)

(我只需要公司编号,不需要括号内的文字)

谢谢!!

4

3 回答 3

2

假设除了列出的 3 对之外没有其他列,这可以通过一个简单的WHERE子句来完成,该子句测试NULL每列中的非开始日期以及相应的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则不需要。Company

于 2013-03-04T18:23:43.070 回答
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

如果以上方法不能解决您的问题,请提供更多信息。

于 2013-03-04T18:26:26.637 回答
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
于 2013-03-04T18:29:20.133 回答