2016-08-03 53 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