您没有指定您的 RDBMS,但此解决方案可能可以转换为大多数。我假设null
每天都存在非读数:
PostgreSQL 9.1 架构设置:
create table foo(id text, changed_on date, val integer);
insert into foo(id, changed_on, val)
values ('B99', to_date('2012-11-28','yyyy-mm-dd'), 400),
('B99', to_date('2012-11-27','yyyy-mm-dd'), 120),
('B99', to_date('2012-11-26','yyyy-mm-dd'), 120),
('B99', to_date('2012-11-25','yyyy-mm-dd'), 300),
('A12', to_date('2012-11-28','yyyy-mm-dd'), 800),
('A12', to_date('2012-11-27','yyyy-mm-dd'), 800),
('A12', to_date('2012-11-26','yyyy-mm-dd'), 800),
('A12', to_date('2012-11-25','yyyy-mm-dd'), 800),
('B99', to_date('2012-11-28','yyyy-mm-dd'), 100),
('B99', to_date('2012-11-27','yyyy-mm-dd'), 260),
('B99', to_date('2012-11-26','yyyy-mm-dd'), 230),
('B99', to_date('2012-11-25','yyyy-mm-dd'), 230)
;
查询:
select id
from foo
where changed_on>=to_date('2012-11-29','yyyy-mm-dd')-3
group by id
having count(distinct val)=1
结果:
| ID |
-------
| A12 |
如果您想尝试或调整另一个 RDBMS 的语法,这里是 SQL Fiddle 。