3

私は次のテーブル構造を持っています:

ID       COMPANY       PROJECT      ACTIVITY     TYPE
1        A             1            A1.1         NORMAL
2        A             1            A1.2         NORMAL
3        A             1            A1.3         NORMAL
4        A             2            A2.1         DUMMY
5        A             2            A2.2         DUMMY
6        A             2            A2.3         DUMMY
7        A             3            A3.1         NORMAL
8        A             3            A3.2         DUMMY
9        A             3            A3.3         NORMAL

私の目的は、すべてのアクティビティ(combination company xプロジェクト内)がダミーである会社とプロジェクトを取得することです。

私は以下のSQLを書きました:

SELECT COMPANY, PROJECT
FROM TABLE
GROUP BY COMPANY, PROJECT
HAVING TYPE = 'DUMMY'

ただし、A社とプロジェクト2(私の条件を満たす唯一のもの)だけでなく、3社のプロジェクト3(hhichにはDUMMYタイプが1つしかない)もあります。

声明を修正するのを手伝ってくれませんか。

ありがとう!!!!

4

2 に答える 2

3

あなたは成功に近づいています。MAXおよび機能を利用しMINます。

SELECT  COMPANY, PROJECT
FROM    TABLE
GROUP   BY COMPANY, PROJECT
HAVING  MAX(TYPE) = MIN(TYPE) AND
        MAX(TYPE) = 'DUMMY'
于 2013-03-08T15:17:20.530 に答える
0

ステートメントを使用して、EXISTS探している答えを得ることができます。

SELECT DISTINCT COMPANY, PROJECT
FROM TABLE t
WHERE EXISTS (
  SELECT 1
  FROM TABLE tDummy
  WHERE tDummy.COMPANY = t.COMPANY
  AND tDummy.PROJECT = t.PROJECT
  AND tDummy.[TYPE] = 'DUMMY')
AND NOT EXISTS (
  SELECT 1
  FROM TABLE tNotDummy
  WHERE tNotDummy.COMPANY = t.COMPANY
  AND tNotDummy.PROJECT = t.PROJECT
  AND (
    tNotDummy.[TYPE] <> 'Dummy'
    OR tNotDummy.[TYPE] IS NULL));

TYPEこれは、がnullの場合、それを「DUMMY」としてカウントしないことを前提としています。

于 2013-03-08T15:55:06.277 に答える