처음 질문드립니다.. postgres 사용 며칠만에.^^;;
현재
MySQL로 작업이 진행중 다시 PostgreSQL을 검토하고 있는 상황입니다.
MySQL에서는 서버쿼리가 안되어 변수선언을 통해
예 >
set @seq = 0;
select (@seq := (@seq + 1) % 300) rn , 이하 생략.
이런 형태의 문장을 사용하였습니다.
현재 코드중의 상당 부분이 이번 임시 변수 선언으로 처리되어 있는데
1. 일단 postgres에서 이런 식으로 변수를 사용할 수 있는지 궁금합니다.
-- 사실 현재 대부분의 코드가
> Select @buf := val1 from T1 ;
> Update val2 = @buf ...;
이런 형태이고 더욱 문제가 되는 것은 기존의 MySQL 코드에서
어떤 조건이 연속일수를 구하기 위해
변수를 0으로 셋팅하고
> select max(case when price > open then (case when @v2 > 0 then @v1 := @v1 + 1 else @v1 end) else @v2 := 0 end) as seq from TB_QD2 T1, TB_QD2 T2 where T1.rn >= 1 and T1.rn <= 30 and T1.code = '00010'
이런 식의 문장을 많이 사용하여
변수선언이 가능하면 좋겠습니다
2. 두번째는
sequence 사용에 관한 것인데
drop sequence rn_seq;
create sequence rn_seq
increment 1 minvalue 1 maxvalue 151 start 1 cycle;
insert into TB_QD2 (rn, code, date)
select nextval('rn_seq'), code, date from jd
where date >= 20020102 order by code, date desc;
여기서 제가 생각하기엔 코드별로
다시 날짜가 최근부터 1, 2, 3, 이런 순서로 나올것 같은데
결과는
nextval | code | date
---------+-------+---------
53 | 00010 | 20020814
40 | 00010 | 20020813
39 | 00010 | 20020812
38 | 00010 | 20020809
37 | 00010 | 20020808
36 | 00010 | 20020807
이런식이거든요..
물론 JD 테이블의 최초 코드는 00010 이고 가장 최근날짜는 14일 입니다.
12 다음에 9일은 맞고요.. 그런데 seq가 이렇게 나오는것이 이해가 안되어
그럼. 이만.. 물러갑니다.
|