在 SQL Server 2005 中,我有一个表格cm_production,列出了所有已投入生产的代码。该表具有ticket_number、program_type和program_name以及push_number其他一些列。
cm_production
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
这让我走到了一半,但它计算了所有程序名称,而不是不同的程序名称(我不希望它在该查询中这样做)。我想我只是想不通如何告诉它只计算不同的程序名称而不选择它们。或者其他的东西。
按节目类型和推送号码统计所有 DISTINCT 节目名称
SELECT COUNT(DISTINCT program_name) AS Count, program_type AS [Type] FROM cm_production WHERE push_number=@push_number GROUP BY program_type
DISTINCT COUNT(*)将为每个唯一计数返回一行。您想要的是COUNT(DISTINCT <expression>):评估组中每一行的表达式并返回唯一的非空值的数量。
DISTINCT COUNT(*)
COUNT(DISTINCT <expression>)