1

Where 句の Select ステートメントで使用した関数の出力を使用できるように、SQL クエリを記述する正しい方法は何ですか?

データ表:

ID    Count_ID
111   2
111   2
222   3
222   3
222   3
333   1

クエリ:

Select ID, Count(Table1.ID) As Count_ID
From Table1
Where Count_ID = 3
Group By ID

現在、Count_ID の Where 句にある無効な列名が表示されます。

4

3 に答える 3

3

フィルタリングには循環依存があります。カウントが 3 であるレコードのみを選択したいのですが、これを決定する前にそれらをカウントする必要があります。これは、WHERE 句ではなく HAVING 句が必要であることを意味します (集計関数でフィルター処理するには、常に HAVING 句が必要です)。

さらに、WHERE または HAVING 句の集計関数にエイリアス列名を使用することはできません。フィルタリングで関数を繰り返す必要があります。

Select ID, Count(ID) As Count_ID
From Table1
Group By ID
HAVING Count(ID) = 3;
于 2013-07-30T23:52:53.367 に答える
2

この場合、集計関数とグループ化を参照しているため、HAVING句を使用する必要があります。

 Select ID, Count(Table1.ID) As Count_ID
   From Table1
        Group By ID
        Having Count(Table1.ID)  = 3
于 2013-07-30T23:52:38.027 に答える
1

または、これも使用できます。

SELECT ID, Count_ID
FROM
  (SELECT ID, Count(ID) AS Count_ID
   FROM Table1
   GROUP BY ID) Calced
WHERE Calced.Count_ID = 3;

http://sqlfiddle.com/#!4/f2a73/5

于 2013-07-31T00:27:22.293 に答える