-1

SELECT department FROM myTable WHERE contact IS NULL

   Department    Contact
    ------------- ---------
    Cleaning      Jack
    Admin         Peter
    Software      James
    Cleaning      (null)
    Cleaning      Jill
    Hardware      (null)

上の表で、既存の連絡先を除いて連絡先が null である部門を選択するにはどうすればよいですか。

上記のステートメントは、「Cleaning」と「Hardware」を返します。

期待したのは「ハードウェア」だけ

「ハードウェア」のみを選択するにはどうすればよいですか、それとも可能ですか。

ティア

4

3 に答える 3

2

null 以外の連絡先がない行のみを返したいと思います。

SELECT
    DISTINCT department
FROM
    myTable
WHERE
    contact IS NULL
    AND department NOT IN (SELECT department FROM myTable where contact IS NOT NULL)

INまたは、句なしで実行したい場合:

SELECT
    DISTINCT a.[department]
FROM
    myTable AS a
LEFT OUTER JOIN
    myTable AS b
        ON b.[department] = a.[department]
        AND b.[contact] IS NOT NULL
WHERE
    a.[contact] IS NULL
    AND b.[contact] IS NULL

NOT NULL条件を使用して自己結合し、句JOINで for をチェックして失敗したことを確認します。NULLWHERE

于 2013-05-14T04:35:56.173 に答える
1

ANY レコードの null 以外の値に関連付けられている部門を除外したいようです。これを行うには、サブクエリを実行して null 以外の部門をすべて取得し、null 部門を取得するクエリからそれらを除外する必要があります。このような:

SELECT DISTINCT department
FROM mytable
WHERE contact is null 
AND department NOT IN (SELECT department FROM mytable where contact is not null)
于 2013-05-14T04:35:52.390 に答える
0
SELECT department,
         SUM(CASE WHEN Contact is not null THEN 1 ELSE 0 END) as count
         from myTable
         group by department
         HAVING count > 0 ;
于 2013-05-14T04:37:53.770 に答える