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