Cute Happy Ghost
본문 바로가기
DB/Postgresql

[postgresql] loop문, 반복문, 테이블의 loop문, loop문에서 select하여 insert하기

by JENN_tech7 2022. 8. 16.
728x90
SMALL
  • 원하는 쿼리
    • airborne(측정지점)의 각 fclt_sn(측정시설)가 갖고있는 가장 작은값의 airb_sn(측정지점 일련번호)를 가져와airb_sn만큼 loop를 돌리고,
      2022-08-16 09:00부터 2022-08-17 00:00까지 1분단위로 측정시간대를 설정해준다
  • 문제 및 해결
    • '행에 있는 루프의 루프 변수는 레코드 변수이거나 스칼라 변수의 목록이어야 함'이라는 오류가 떠서 declare로 int변수를 설정해줌

 

  • 최종쿼리
do $$
declare
airb int;
begin
for airb in select min(airb_sn) from airborne group by fclt_sn
loop
INSERT INTO msur_info_sku_ab_1 (airb_sn ,msur_date) 
select  
    airb
    ,series 
from generate_series('2022-08-16 09:00'::timestamp, '2022-08-17 00:00'::timestamp, '1 minutes') AS series
;
end loop;
end;
$$;
commit;

 

 

 

  • 위에서 지정해주지 못한 fclt_sn을 airborne 마스터 테이블을 활용하여 update시켜준다
update msur_info m
set fclt_sn = a.fclt_sn 
from airborne a 
where a.airb_sn = m.airb_sn
728x90
LIST

댓글