2016-08-03 95 views
0

我有一張表,如下面的第一張表(抱歉,如果顯示不正確,我是StackOverflow的新手,並沒有完全弄清楚如何在問題中顯示錶) 。我已經收到了幫助做了一些不重複的ID(我不是指不同的計數,不同的計數會返回7(a,b,c,d,e,f,g)的結果。我希望它返回4(a,c,d,f)的計數。這些是沒有多個類型代碼的ID)。現在我需要進一步展示一個類型代碼中有多少次只有一個類型代碼的ID。例如,我們希望看到類似下面第二個表格的結果。有兩個具有單一類型代碼444(c,f)的ID實例,有一個具有單一類型代碼111(a)和222(d)的ID實例。使用SQL計數數據

以供參考,這讓我說只有一個類型代碼爲

select count(*) from 
(select id from 
    mytable 
    group by id 
    having count(*) =1) t 


ID|type code 
a|111 
b|222 
b|333 
c|444 
d|222 
e|111 
e|333 
e|555 
f|444 
g|333 
g|444 

Type Code|Count 
111|1 
222|1 
444|2 
+0

我無法理解你的要求。 –

+0

在你的問題中,不要談論你收到的其他幫助以及還有其他可能性。儘可能簡單地理解你的問題。 – Missy

回答

1

也許這是你問的ID的計數查詢?

SELECT [type code], 
     COUNT(*) [count] 
FROM mytable 
WHERE [ID] IN (SELECT [ID] 
        FROM  mytable 
        GROUP BY [ID] 
        HAVING COUNT([type code]) = 1) 
GROUP BY [type code] 
+1

這看起來很棒。 – shawnt00

+0

請注意,用於分隔標識符的方括號是特定於產品的。 ANSI SQL有雙引號,例如''輸入代碼「'。 – jarlh

+0

這工作!謝謝!! –

1

這可以使用嵌套聚合解決:

SELECT type_code, COUNT(*) 
FROM 
(-- as this looks for a single row you can simply add the type code 
    SELECT ID, MIN(type_code) as type_code 
    FROM mytable 
    GROUP BY ID 
    HAVING COUNT(*) = 1 
) AS dt 
GROUP BY type_code