使用 GROUP BY 时需要返回表中的所有列

Sha*_*hah 5 t-sql sql-server

我有一张桌子,假设它有四列 Id, Name, Cell_no, Cat_id。我需要返回计数Cat_id大于 的所有列1

该组应在Cell_no和上完成Name。到目前为止我做了什么..

select Cell_no, COUNT(Cat_id)
from TableName
group by Cell_Number
having COUNT(Cat_id) > 1
Run Code Online (Sandbox Code Playgroud)

但我需要的是这样的东西。

select * 
from TableName
group by Cell_Number
having COUNT(Cat_id) > 1
Run Code Online (Sandbox Code Playgroud)

Kir*_*rst 2

Pratik 的答案很好,但IN您需要JOIN像这样返回结果集,而不是使用运算符(仅适用于单个值)

SELECT t.* 
FROM tableName t
INNER JOIN      
    (SELECT Cell_no, Name 
    FROM TableName
    GROUP BY Cell_no , Name
    HAVING COUNT(Cat_id) > 1) filter
    ON t.Cell_no = filter.Cell_no AND t.Name = filter.Name
Run Code Online (Sandbox Code Playgroud)

  • Kirk Broadhurst,, IN 运算符可以很好地处理 Oracle 数据库中的多列组合..请原谅我..我没有检查在 SQL SQRVER 中是否同样有效..:) (2认同)