안녕하세요.. 데이터베이스 초보라 질의 드립니다.
test
id | date | x | y |
1 | 2018-10-08 10:52 | 3 | 1 |
1 | 2018-10-08 10:53 | 5 | 1 |
1 | 2018-10-08 10:54 | 4 | 1 |
* date는 05시 ~ 21시 까지 있습니다.
* id는 1부터 약 500까지 있습니다..
5시에 date의 x값 = a
, 21시 date의 x값 = b 라고 할때
DELETE test
WHERE CONVERT(VARCHAR(10), date, 20)='2018-10-08 AND (x < a OR x > b)
을 하려고합니다.. 하루는 상관이없는데
2013년도부터 2018년도까지 하기엔 계속 date를 수정해주어야해서요..
또한 id도 1부터 약 500까지 있어서
프로그램적으로 자동으로 순차시키면서 데이터를 지울수 있는지 질의드립니다 ㅠ
책을보고 구글에 검색해봐도
지식깊이가 낮아 좀 해결이안되더라구요..
도움좀 부탁드리겠습니다 ! ㅠㅠ
내용을 잘 이해하지 못해 쿼리를 완성을 못했지만, 참고하셔서 작성하시면 될것 같아요.
declare @i int = 1
declare @i_max int = 500
declare @a int = 1 ;
declare @b int = 1 ;
declare @date datetime ;
while ( @i <= @i_max )
begin
select top 1 @date = CONVERT(VARCHAR(10),[date], 20) from test where id = @i;
select top 1 @a = x from test where id = @i
and datepart(hour, [date]) = 5
select top 1 @b = x from test where id = @i
and datepart(hour, [date]) = 21
delete test
where id = @i and CONVERT(VARCHAR(10), [date], 20) = CONVERT(VARCHAR(10),@date, 20) and (x < @a OR x > @b)
set @i += 1;
end