注册 登录
编程论坛 SQL Server论坛

这个问题可以用SQL 实现吗?

petertang 发布于 2017-12-12 00:12, 1550 次点击
表很简单.就三列

ID, Date, Comment

 ID 这列很长,许多ID#是重复出现的. Date 这列就是对应没个ID, 许多也是重复出现.

我想在COMMENT 这列实现对每ID,如果对应日期那列,不同的日期出先三次或以上,就是"
YES" ,否则就是"NO".

举个例子,假如ID 222, 有30行.但对应日期那拦只有04/15/2017, 04/18/2017 这俩个
 日期.那么22对应的COMMENT 都是"NO". 如果出现三不同个日期,就是"YES"


好像用SELF JOIN 可以?
1 回复
#2
mywisdom882017-12-12 13:48
分别统计2次,就可以了.
ID,Date,Comment
1,04/05/2017,''
1,04/05/2017,''
1,04/05/2017,''
2,05/05/2017,''
2,06/05/2017,''
2,07/05/2017,''
2,08/05/2017,''
2,05/05/2017,''
select id,date,count(1) as cnt from 表 group by id,date
-- 结果
id,date,cnt
1,04/05/2017,3
2,05/05/2017,2
2,06/05/2017,1
2,07/05/2017,1
2,08/05/2017,1
select id,count(1) as cnt2 from 表 group by id
-- 结果
id,date,cnt2
1,1
2,4
把上面的2步组合起来,
update 表 set
from 表 a,(select id,coment =(case when b.cunt >=3 then 'yes' else 'no' end) from (select id,count(1) as cnt2 from (select id,date,count(1) as cnt from 表 group by id,date) group by id)b)c
where a.id=c.id


1