我正在尝试制作一个包含客户信息的数据库后面/前面,信息范围从约会和笔记等,因为我们是一个咨询服务,如果你错过(dna)3个会议,你在技术上从我们的服务中解雇了我想要是自动化这个过程 - 帮助我是一个自学新手,我试图用“SELECT CASE”做这个,但不知道在这里
id | nhi | service | type | length | contactdate | notes
1 |PEB8132 | aod | t32 | 20 | 2012-11-20 | notes go here
这是我的桌子,当他们没有参加长度变成dna时,我想在3次尝试失败后用它来标记。
答案 0 :(得分:1)
你想把所有拥有[length] ='dna'的人聚集在一起,显示他们拥有多少dna的数量。
您还希望将其限制为“dna”> 3,但您不能在WHERE
子句中使用聚合,因此我们使用HAVING
。
您可以在SELECT
语句中添加更多列,但您还需要将其添加到GROUP BY
。
SELECT nhi, count([length]) AS dna
FROM yourTable
WHERE [length] = 'dna'
GROUP BY nhi
HAVING count([length]) > 3
如果你想要返回所有记录,而不仅仅是[length] ='dna',那么你可以使用CASE。
SELECT nhi, SUM(CASE WHEN [length]='dna' THEN 1 ELSE 0 END) AS dna
FROM yourTable
GROUP BY nhi
这假定nhi
是用户的ID,这是您识别此人的方式。
答案 1 :(得分:0)
这个适用于Oracle。
select nhi ,sum(case when length='dna' then 1 else 0 end) dna_count
from table
group by nhi
having sum(case when length='dna' then 1 else 0 end)>3;