不包含在聚合或group by子句中

时间:2014-06-24 10:37:31

标签: sql sql-server

以下是表格:

产品(制造商,型号,类型)

表"产品"包括有关制造商,型号和类型的信息(' PC','笔记本电脑'打印机')

挑战:

找出仅生产相同型号型号的制造商,这些型号的数量超过1个。

我做了什么:

SELECT maker, type
FROM Product
GROUP BY maker
HAVING COUNT (type) > 1 AND COUNT( DISTINCT type ) = 1

问题:

专栏' Product.type'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

备注:

在表格中,制造商D仅创建打印机。所以,我想得到:

Maker | Type

D     | Printer

如果我从查询中删除类型,我得到D,这是我想要的,但没有类型。如果我在GROUP BY子句中包含类型,我会得到不同的结果。

问题:

如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

SELECT  maker, MIN(type)
FROM    product
GROUP BY
        maker
HAVING  COUNT(DISTINCT type) = 1
        AND COUNT(*) > 1

答案 1 :(得分:0)

尝试,

SELECT maker, type
FROM Product
GROUP BY maker,Type
HAVING COUNT (type) > 1 AND COUNT( DISTINCT type ) = 1