SQL Server查询 – 用DISTINCT选择COUNT(*)

在SQL Server 2005中,我有一个表cm_production,其中列出了已投入生产的所有代码。该表具有ticket_number,program_type以及program_name和push_number以及一些其他列。

目标:通过程序类型和推号计算所有DISTINCT程序名称

我到目前为止是:

SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] 
FROM cm_production 
WHERE push_number=@push_number 
GROUP BY program_type

这使我得到一部分,但它计数所有的程序名称,而不是不同的(我不希望它在查询中做)。我想我不能包装我的头围绕如何告诉它只计数不同的程序名称,而不选择它们。或者其他的东西。

最佳答案

Count all the DISTINCT program names
by program type and push number

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):计算组中每行的表达式,并返回唯一的非空值的数量。

转载注明原文:SQL Server查询 – 用DISTINCT选择COUNT(*) - 代码日志