在SQLServer2005中,我有一个表cm_production,其中列出了已投入生产的所有代码.表中有ticket_numberprogram_typeprogram_namepush_number以及其他一些列.

目标:按程序类型和推送编号统计所有不同的程序名.

到目前为止,我得到的是:

DECLARE @push_number INT;
SET @push_number = [HERE_ADD_NUMBER];

SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] 
FROM cm_production 
WHERE [email protected]_number 
GROUP BY program_type

这让我达到了一半,但它计算的是所有程序名,而不是不同的程序名(我不希望它在该查询中这样做).我想我就是不知道如何告诉它只计算不同的程序名而不选择它们.或者别的什么.

推荐答案

按程序类型和推送编号统计所有不同的程序名

SELECT COUNT(DISTINCT program_name) AS Count,
  program_type AS [Type] 
FROM cm_production 
WHERE [email protected]_number 
GROUP BY program_type

DISTINCT COUNT(*)将为每个唯一计数返回一行.您想要的是COUNT(DISTINCT <expression>):为组中的每一行计算表达式,并返回唯一的非空值的数量.

Sql相关问答推荐

在 Presto SQL 的 where 子句中使用 Max()

比较表中的一些值

SQL Query 根据另一列的值查找唯一列值

当此标识符不再在数据库中时,缺少特定标识符的日期而不添加额外的日期 SQL

如何有效诊断 SQL Server 2012 数据库插入上的“等待操作超时”?

可变字符串问题

在离开时计算不同的值

如何计算给定状态的最后记录?

为什么 query_to_xml 在 Postgres 中为易失性查询返回错误?

StudyId分配一个 'Y/N'

为什么这个转换为 DATETIME2?

根据其他记录更新记录

如何为原始类型(int,real ...)重载相等运算符?

连接三个表并检索预期结果

ROW_NUMBER 无 ORDER BY

PostgreSQL 中的单引号和双引号有什么区别?

SQL Server 如果存在则 1 否则 2

NOT LIKE 和 LIKE 不返回相反的结果

使用复杂类型查询 Spark SQL DataFrame

postgresql - 查看架构权限