Sql server 不使用分组方式获取作业计数

Sql server 不使用分组方式获取作业计数,sql-server,tsql,select,Sql Server,Tsql,Select,我有以下代码来计算某个客户机的作业数 SELECT CLIENT_ID, COUNT(CASE WHEN CURRENT= 'Y' then 1 end) as JOBS_COUNT FROM CLIENTS GROUP BY CLIENT_ID 然而,为了完成这一点,我需要在最后使用一个group by,我要寻找的是一个查询,它统计分区中当前的标志,这样我就不必在最后使用group by,这是可能的吗?您可以给出一个行号()在分区上,选择rn=1以避免使用派生表在分区上重复。 我添加的解决方

我有以下代码来计算某个客户机的作业数

SELECT CLIENT_ID,
COUNT(CASE WHEN CURRENT= 'Y' then 1 end) as JOBS_COUNT
FROM CLIENTS
GROUP BY CLIENT_ID
然而,为了完成这一点,我需要在最后使用一个group by,我要寻找的是一个查询,它统计分区中当前的标志,这样我就不必在最后使用group by,这是可能的吗?

您可以给出一个行号()在分区上,选择rn=1以避免使用派生表在分区上重复。 我添加的解决方案获得具有count的不同分区。如果你需要更多的帮助,请告诉我

SELECT Distinct CLIENT_ID,
   COUNT(CASE WHEN CURRENT= 'Y' then 1 end) OVER (PARTITION BY ep.CLIENT_ID) as 
 jos_count as JOBS_COUNT
FROM CLIENTS
我想你想要:

SELECT CLIENT_ID,
       COUNT(CASE WHEN CURRENT = 'Y' then 1 end) OVER (PARTITION BY CLIENT_ID) as JOBS_COUNT
FROM CLIENTS;

这似乎是一个奇怪的请求,因为每个
客户机ID
返回多行。但是,这似乎正是您所要求的。

使用windows函数对结果进行分区,并获取distinctSample数据和所需的结果。很高兴为您提供帮助:)