SQL案例与否?

SQL案例与否?,sql,case,Sql,Case,我正在尝试建立一个包含客户信息的前后数据库,这些信息包括预约和笔记等,因为我们是一家咨询服务机构,如果您错过(dna)3个会议,您将从我们的服务中技术性地退出。我想要的是使这一过程自动化-帮助我是一名自学成才的新手,我正在尝试使用“选择案例”来实现这一点但我不知道 id | nhi | service | type | length | contactdate | notes 1 |PEB8132 | aod | t32 | 20 | 2012-11-20 | not

我正在尝试建立一个包含客户信息的前后数据库,这些信息包括预约和笔记等,因为我们是一家咨询服务机构,如果您错过(dna)3个会议,您将从我们的服务中技术性地退出。我想要的是使这一过程自动化-帮助我是一名自学成才的新手,我正在尝试使用“选择案例”来实现这一点但我不知道

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

这是我的表格,当他们不参加时,长度变为dna,这就是我想在3次尝试失败后用来标记的长度。

您想将所有具有[length]=“dna”的人分组,显示他们拥有多少dna的计数

您还希望将其限制为'dna'>3,但不能在
WHERE
子句中使用聚合,因此我们使用
HAVING

您可以将更多列添加到
SELECT
语句中,但也需要将它们添加到
分组中

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


额外阅读:,

你想把所有拥有[length]=“dna”的人分组,显示他们拥有多少dna

您还希望将其限制为'dna'>3,但不能在
WHERE
子句中使用聚合,因此我们使用
HAVING

您可以将更多列添加到
SELECT
语句中,但也需要将它们添加到
分组中

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


额外阅读:,

这一条在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;

这个在甲骨文公司工作

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;

一个人的独特身份是什么?nhi?(即“如果-你-错过”部分,是什么标识-你-?)是什么唯一标识了一个人?nhi?(即“if-you-miss”的一部分,是什么标识了-you-?)如果id只是一个序列,我认为这不太正确。好的,“sequential value”或主键。可能是nhi的一个小组。谢谢大家,MikeSmithDev的答案接近我想要的,刚刚改成3=3,得到了我需要的。现在它会标记那些有3个DNA的人,并提醒用户释放。如果id只是一个序列,我想这不太正确。好的,“序列值”或主键。可能是nhi的一个小组。谢谢大家,MikeSmithDev的答案接近我想要的,刚刚改为3=3,得到了我需要的。现在它会标记那些有3个DNA的人,并提醒用户出院