2013-02-12 54 views
1

我試圖返回給定數量的服務器名稱,然後計算返回的次數。例如:計算唯一名稱的數量

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

這將返回以下:

servername  number 
server1   1 
server2   1 

什麼我試圖得到的是針對「號碼」一欄改爲「2」,因爲有2個不同的servernames節點。這應該非常簡單,但我完全不知所措。

回答

3

您可以使用相關子查詢:

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

0
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