在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
Run Code Online (Sandbox Code Playgroud)
这让我在那里,但它计算所有的程序名称,而不是不同的程序名称(我不希望它在该查询中做).我想我无法绕过如何告诉它只计算不同的程序名而不选择它们.或者其他的东西.
我可以通过以下方式选择列中的所有不同值:
SELECT DISTINCT column_name FROM table_name;SELECT column_name FROM table_name GROUP BY column_name;但是如何从该查询中获取行数呢?是否需要子查询?
有没有更好的方法来执行这样的查询:
SELECT COUNT(*)
FROM (SELECT DISTINCT DocumentId, DocumentSessionId
FROM DocumentOutputItems) AS internalQuery
Run Code Online (Sandbox Code Playgroud)
我需要计算此表中不同项目的数量,但不同的是超过两列.
我的查询工作正常,但我想知道我是否只使用一个查询得到最终结果(不使用子查询)
我试图根据多个标准计算不同的值. 样本数据练习包括在下面.
Table1
??????????????????????????
? Bug ID ? Status ? Test ?
??????????????????????????
? 1 ? Open ? w ?
? 2 ? Closed ? w ?
? 3 ? Open ? w ?
? 4 ? Open ? x ?
? 4 ? Open ? x ?
? 5 ? Closed ? x ?
? 5 ? Closed ? x ?
? 5 ? Closed ? y ?
? 6 ? Open ? z ?
? 6 ? Open …