こんにちは私は、同じテーブルから異なるWHERE句を使用してcountとcount(distinct)の両方を返す1つのSQLステートメントを記述したいと思います。
例えば
People
-----------------------
ID Name Sex
1 Alex F
2 Alex M
3 Alex M
4 Andy F
5 Andy M
6 Ann F
7 Ann F
この例では、を書くことができますがSELECT (SELECT COUNT(1) FROM People), (SELECT COUNT(DISTINCT Name) FROM People)
、それはSELECTが多すぎます。だから私は代わりに書きSELECT COUNT(1), COUNT(DISTINCT Name) FROM People
ます。
しかし、のようなものを返したい場合はどうなりますかSELECT (SELECT COUNT(1) FROM People), (SELECT COUNT(DISTINCT Name) FROM People WHERE Sex='M')
。SELECTを少なくするために、上記と同じようにどのように行いますか?
これが関連しているかどうかはわかりませんSELECT COUNT(1), SUM(CASE WHEN Sex='M' THEN 1 ELSE 0 END) FROM People
。1つのSELECTに異なるWHERE句を含めるようなものを記述できることは知っていますが、それはCOUNTの場合のみであり、DISTINCTを処理しません。DISTINCTが必要な場合、これをどのように使用しますか?
DBはSQLServer2008R2です。ありがとうございます