cm_production
SQL Server 2005 には、運用環境に導入されたすべてのコードをリストするテーブルがあります。テーブルにはticket_number
、、、および他のいくつかの列がprogram_type
あります。program_name
push_number
目標: プログラム タイプとプッシュ番号ごとにすべての異なるプログラム名をカウントします。
これまでのところ、次のものがあります:
DECLARE @push_number INT;
SET @push_number = [HERE_ADD_NUMBER];
SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type]
FROM cm_production
WHERE push_number=@push_number
GROUP BY program_type
これで途中までは到達しましたが、すべてのプログラム名がカウントされており、個別のプログラム名はカウントされていません (このクエリでは、個別のプログラム名はカウントされないと予想しています)。個別のプログラム名を選択せずに、個別のプログラム名のみをカウントするように指示する方法が、私には理解できないようです。
ベストアンサー1
プログラムタイプとプッシュ番号ごとにすべての異なるプログラム名を数えます
SELECT program_type AS [Type],
Count(DISTINCT program_name) AS [Count],
FROM cm_production
WHERE push_number = @push_number
GROUP BY program_type
DISTINCT COUNT(*)
それぞれのユニークカウントの行を返します。必要なのはCOUNT(DISTINCT <expression>)
: グループ内の各行の式を評価し、一意の null 以外の値の数を返します。