计算唯一名称的数量

问题描述:

我试图返回给定数量的服务器名称,然后计算返回的次数。例如:计算唯一名称的数量

select servername, count(distinct servername) number 
from TABLE 
where [target] = 'blah' 
group by servername 

这将返回以下:

servername  number 
server1   1 
server2   1 

什么我试图得到的是针对“号码”一栏改为“2”,因为有2个不同的servernames节点。这应该非常简单,但我完全不知所措。

您可以使用相关子查询:

select distinct servername, 
    (select count(distinct servername) 
    from yourtable 
    where target = 'blah') number 
from yourtable 
where target = 'blah' 

SQL Fiddle with Demo

+0

我觉得这是简单的,我忽略了。谢谢! – 2013-02-12 21:32:53

select servername, 
     count(*) over (partition by servername) as number 
from the_table 
where [target] = 'blah' 

窗口职能(over()部分)所有现代DBMS包括SQL Server(你似乎可以用支持)

+0

我不认为你可以在SQL Server中使用'count(distinct)'和'over'。 – Taryn 2013-02-12 21:35:27

+0

@bluefeet:是的,后来我意识到了。我纠正了它(由于''partition by''实际上并不需要) – 2013-02-12 21:36:34