SQL需要比较行计数值



我有一个查询,返回ID,名称和ID已输入到表中的次数计数。

SELECT 
ID,
NAME,
COUNT(*) count
FROM 
TABLE
GROUP BY
NAME, ID, CASE_DETAIL_ID
HAVING
COUNT(*) > 1;

返回以下数据:

3

一些示例数据会有所帮助,但您可以使用CTE,select最低,使用min(),如下所示:

WITH x AS(
SELECT t.id, t.nametext, COUNT(*) as count
FROM table t
GROUP BY id, t.nametext, CASE_DETAIL_ID
), y as(
SELECT x.id, MIN(x.[COUNT]) as mincount
FROM x
GROUP BY x.id
)
select y.id, x.nametext, y.mincount
from y
join x
on x.[COUNT] = y.mincount
and x.id = y.id

也可以这样用top 1order by来完成:

SELECT TOP 1 id, name, COUNT(*) as count
FROM TABLE
WHERE ID = 123
GROUP BY NAME, ID, CASE_DETAIL_ID
ORDER BY count DESC

但是请记住,由于这只会select第一行,因此这只适用于where子句,因为它总是只返回1行。

而如果你使用CTE选项,它也可以工作,如果你想要每个id,没有where id = 123

最新更新