[pgsql-jp: 40649] ストアドファンクションでのCASE文作成方法

yukihito miso mail @ rishiri.info
2010年 12月 31日 (金) 09:24:00 JST


?元になるテーブル[sector]
ID n_id s_id sector
1  2    1    第4P
2  2    2    第9P
3  2    3    GP
4  3    1    第3P
5  3    2    第5P
6  3    3    第8P
7  3    4    GP

このようなテーブル[sctor]から

よろしくおねがいします。

たとえばn_idが2の場合なら
INSERT INTO tmp_records2 SELECT id, name, phonetic, age, gender, sg
, CASE s4 WHEN '00:00:00' THEN '0:00:00' ELSE s4::TIME - '06:00:00'::TIME 
END AS s4
, CASE s9 WHEN '00:00:00' THEN '0:00:00' ELSE s9::TIME - '06:00:00'::TIME 
END AS s9
, CASE sg WHEN '00:00:00' THEN '10:00:00' ELSE sg::TIME - '00:00:00'::TIME 
END AS record
, n_id, number, award_name FROM tmp_records1 WHERE n_id = :n_id ORDER BY 
record ASC, id ASC;

たとえばn_idが3の場合なら
INSERT INTO tmp_records2 SELECT id, name, phonetic, age, gender, sg
, CASE s3 WHEN '00:00:00' THEN '0:00:00' ELSE s3::TIME - '06:00:00'::TIME 
END AS s3
, CASE s5 WHEN '00:00:00' THEN '0:00:00' ELSE s5::TIME - '06:00:00'::TIME 
END AS s5
, CASE s8 WHEN '00:00:00' THEN '0:00:00' ELSE s8::TIME - '06:00:00'::TIME 
END AS s8
, CASE sg WHEN '00:00:00' THEN '10:00:00' ELSE sg::TIME - '00:00:00'::TIME 
END AS record
, n_id, number, award_name FROM tmp_records1 WHERE n_id = :n_id ORDER BY 
record ASC, id ASC;

というように作成したいのですが
ストアドファンクションでの作成方法を教えてください。 



pgsql-jp メーリングリストの案内