如何在SQL中不显示计数列

3

以下是我的查询:

SELECT  ID ,
        COUNT(STATUS)
FROM    tablename
WHERE   STATUS = 'GREEN'
GROUP BY ID
HAVING  COUNT(STATUS) > 3;

我需要结果只显示ID列,而不是每行的计数。


9
select语句中删除count(STATUS) - Vamsi Prabhala
4个回答

8

只需从选择列表中删除它:

select   ID -- count(STATUS) removed here
from     TABLENAME
where    STATUS = 'GREEN' 
group by ID
having   count(STATUS) > 3

2
您可以使用一个包装查询(wrapper query):
SELECT sub.ID FROM (
SELECT  ID ,
        COUNT(STATUS)
FROM    tablename
WHERE   STATUS = 'GREEN'
GROUP BY ID
HAVING  COUNT(STATUS) > 3) AS sub;

3
哇,那是一种复杂的方式到达那里。 - Sean Lange
这帮助我解决了另一个问题,当时我需要查询的ID,但不带having! - Tim4497

1
SELECT
     ID
     --,COUNT(STATUS) as [Count]
FROM    tablename
WHERE   STATUS = 'GREEN'
GROUP BY ID
HAVING  COUNT(STATUS) > 3;

当显示该列时,我还会添加“作为[计数]”以向该列添加标签。

0

在 MS SQL (SSMS) 中

SELECT ID  --,COUNT(STATUS) as [Status Count]
FROM    tablename
WHERE   STATUS = 'GREEN'
GROUP BY ID
HAVING  COUNT(STATUS) > 3;

如上所述,子查询可以用于复杂的查询。 或者 您也可以使用CTE - 公共表达式, 例如

with Status_count as 
(
SELECT ID, COUNT(STATUS) as [Status Count]
FROM    tablename
WHERE   STATUS = 'GREEN'
GROUP BY ID
HAVING  COUNT(STATUS) > 3
)
select ID
from Status_count

CTE(公共表达式)用于简化问题并将其转换为子查询,如果可能的话。


我是第一次使用StackOverflow,请在我语法或者发布不符合标准的内容时给予指导。谢谢。 - ASHISH RAJ
如果我有所帮助,请点个赞或点赞。 - ASHISH RAJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接