http://sqlfiddle.com/#!2/134bad비트 복잡한 SQL 쿼리
데이터에 도움이 필요하십니까 :
create table climate (city varchar(10), status char(1), Curdate date);
insert into climate values ('Chennai', 'S', '2013-08-05');
insert into climate values ('Chennai', 'S', '2013-08-06');
insert into climate values ('Chennai', 'S', '2013-08-07');
insert into climate values ('Chennai', 'S', '2013-08-08');
insert into climate values ('Chennai', 'R', '2013-08-09');
insert into climate values ('Chennai', 'R', '2013-08-10');
insert into climate values ('Chennai', 'S', '2013-08-12');
insert into climate values ('Chennai', 'S', '2013-08-13');
insert into climate values ('Chennai', 'R', '2013-08-14');
insert into climate values ('Chennai', 'R', '2013-08-15');
insert into climate values ('Banglore', 'S', '2013-08-05');
insert into climate values ('Banglore', 'S', '2013-08-06');
insert into climate values ('Banglore', 'R', '2013-08-07');
insert into climate values ('Banglore', 'R', '2013-08-08');
insert into climate values ('Banglore', 'R', '2013-08-09');
insert into climate values ('Banglore', 'S', '2013-08-10');
insert into climate values ('Banglore', 'R', '2013-08-12');
insert into climate values ('Banglore', 'R', '2013-08-13');
insert into climate values ('Banglore', 'R', '2013-08-14');
insert into climate values ('Banglore', 'S', '2013-08-15');
링크는 대략적인 데이터가 있습니다.
테이블에서 도시 이름과 상태 ('R'/ 'S')가 2 일 이상 동일하게 유지되는 최신 최대 날짜를 검색해야합니다.
즉. R-Raining S-Sunny
도시가 Rainy 나 Sunny에 연속으로 2 일 이상 계속있을 때 도시와 최대 날짜를 검색해야합니다.
예 :
select city, max(dt) max_dt
from (
select city
, dateadd(dd, x, Curdate) dt
, min(case x when 0 then status end) s0
, min(case x when 1 then status end) s1
, min(case x when 2 then status end) s2
from climate c
cross join (select 0 x union all select 1 union all select 2)x
group by city, dateadd(dd, x, Curdate)
) t
where s0 = s1 and s1 = s2
group by city
경우 : 예 데이터에서,
쿼리는 SQL 서버 2005/2008을 위해 여러분의 도움이
사용중인 SQL Server 버전은 무엇입니까? – GolfWolf
SQL Server 2008을 사용 중입니다. – user2664051