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をテストする単純な句で実行できます。3 つの条件のいずれかが満たされた場合、が返されます。NULLNULLCompany

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 に答える