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

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


目标:按程序类型和推送编号计算所有DISTINCT程序名称


到目前为止,我有:


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

这让我感到很困惑,但是它计算的是所有程序名称,而不是不同的名称(我不希望它在该查询中执行)。我想我只是无法解决如何仅选择不同程序名称而不选择它们的问题。或者其他的东西。


慕莱坞森
浏览 869回答 3
3回答

慕田峪7331174

按程序类型和推送编号计算所有DISTINCT程序名称SELECT COUNT(DISTINCT program_name) AS Count,&nbsp; program_type AS [Type]&nbsp;FROM cm_production&nbsp;WHERE push_number=@push_number&nbsp;GROUP BY program_typeDISTINCT COUNT(*)将为每个唯一计数返回一行。您想要的是COUNT(DISTINCT <expression>):计算组中每一行的表达式并返回唯一的非空值的数量。

慕雪6442864

我需要获取每个不同值的出现次数。该列包含地区信息。我最终得到的简单SQL查询是:SELECT Region, count(*)FROM itemWHERE Region is not nullGROUP BY Region这会给我一个清单,例如:Region, countDenmark, 4Sweden, 1USA, 10

手掌心

您必须为不同的列创建一个派生表,然后从该表中查询计数:SELECT COUNT(*)&nbsp;FROM (SELECT DISTINCT column1,column2&nbsp; &nbsp; &nbsp; FROM&nbsp; tablename&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; WHERE condition ) as dt这dt是一个派生表。
打开App,查看更多内容
随时随地看视频慕课网APP