2012-05-09 11 views
1

私は特定の年齢の人口のすべての人の合計を探しています。私が下で試したクエリは、すべての年齢のカウントを与えます。例えば。 HAVING取り除くように(私は5〜10年を探しているんだ、とクエリは私に、個々の年齢のカウントを与える代わりに、単一の番号を返すので計算されたフィールドとの対比

select datediff(yyyy,dob,admitdate) as age, count(datediff(yyyy,dob,admitdate) as counts 
from myTable 
group by datediff(yyyy,dob,admitdate) 
having (count(datediff(yyyy,dob,admitdate) between 5 and 10) 

これは正しくありませんが、私が試したものWHEREを使用して)働いていません。

+2

を選択します:数(*)年齢 – Manuel

答えて

3
select count(*) as counts 
from myTable 
where datediff(yyyy,dob,admitdate) between 5 and 10 
1
  1. whereからgroup by
  2. 変更havingを削除し、count
  3. を削除ageを選択していない、は次のように選択を作ってみるcount(*)
+0

あなたは私に簡単な説明を教えてもらえますか?なぜcount(*)がここで動作するのか? – wootscootinboogie

+1

@woots 'count'のような集計関数を' group by'節なしで使用すると、結果セット全体を単一のグループに入れます。次に、 'count(*)'は "グループ内の行数を数える"ことを意味します。 –

+0

ああ、大丈夫です。一歩前進して考えてみると、考えられるすべてのレコードが数えられますが、それらを選択しないので、クエリには表示されません。 – wootscootinboogie

関連する問題