1

我正在尝试创建一个包含客户信息的数据库背面/正面,信息范围从约会和笔记等,因为我们是咨询服务,如果您错过(dna)3 个会话,您从技术上退出我们的服务我想要的是自动化这个过程-帮助我是一个自学成才的新手,我正在尝试使用“SELECT CASE”来做到这一点,但这里不知道

id | nhi    | service | type | length | contactdate | notes
1  |PEB8132 | aod     | t32  | 20     | 2012-11-20  | notes go here

这是我的桌子,当他们不参加时,长度变成了 dna,我想在 3 次尝试失败后用它来标记。

4

2 回答 2

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,这是您识别此人的方式。

额外阅读:GROUP BY , HAVING

于 2012-11-22T00:38:28.937 回答
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;
于 2012-11-22T00:48:08.993 回答