2017-02-04 1 views
1

私は、次の表を持っている:ループ状CopyToのクエリ

writing_agent_number|agent_name  |individual_sub_name 
-------------------- ----------------- -------------------- 
300699    |J Todd Foster |Haash,matthew 
300699    |J Todd Foster |Lea, Monique 
300693    |Loran J Marmes |Jensen, Jeffrey A 
300842    |Mattthew Atkinson|Castano, Karissa 
300927    |Richard Melberg |Burk, Barbara 
300694    |Ryan Moran  |Moran, Maura C 
300697    |Scott W Lange, Jr|Stewart, Allisia 

私の目標:agent_nameにはの名前で、どこで「agent_nameの[タイムスタンプ]の.csv」という名前の別のCSVファイルを作成したいです"agent_name"列の各別エージェントに対するエージェント。以下は

は私がエージェント名を入力変数をしないのです想定していますが、私はどこここから行くことがわからない(私はSQLに新しいです、私を許してください)私はを、持っているものです。どんな助けもありがたいです。

CREATE OR REPLACE FUNCTION get_commissions() 
$func$ 
BEGIN LOOP 
    EXECUTE ' 

COPY 
(SELECT 
writing_agent_number AS "Writing Number" 
,agent_name AS "Agent Name" 
,indiv_sub_name AS "Client Name" 

FROM rdf_nwh_ind 
TO '/Users/ryanmoran/Downloads/agent_name.csv' 
WITH CSV Delimiter ',' Header; 


END LOOP;' 
END 
$func$ LANGUAGE plpgsql; 

答えて

0
CREATE OR REPLACE FUNCTION get_commissions() RETURNS bool AS $func$ 
DECLARE 
    v_agent_name text; 
BEGIN 
    FOR v_agent_name IN SELECT DISTINCT agent_name FROM rdf_nwh_ind 
    LOOP 
     EXECUTE format($$COPY (
      SELECT writing_agent_number AS "Writing Number", 
        agent_name AS "Agent Name", 
        indiv_sub_name AS "Client Name" 
      FROM rdf_nwh_ind 
      WHERE agent_name = %s 
      ) 
      TO '/Users/Shared/%s.%s.csv' 
      WITH CSV Delimiter ',' Header$$, 
       quote_nullable(v_agent_name), 
       replace(v_agent_name, ' ', '_'), 
       to_char(now(), 'YYYY-DD-MM')); 
    END LOOP; 
    RETURN true; 
END; 
$func$ LANGUAGE plpgsql;