2017-02-04 1 views
1

Je le tableau suivant:Looped CopyTo Recherche

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 

Mon but: Je voudrais créer un fichier csv séparé nommé "agent_name [timestamp] .csv." Où agent_name est le nom du agent pour CHAQUE agent distinct dans la colonne "nom_agent".

Voici ce que je, (s'il vous plaît pardonnez-moi, je suis nouveau à sql) Je suppose que je manque une variable qui entre le nom de l'agent, mais je ne suis pas sûr où aller d'ici. Toute aide est appréciée:

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; 

Répondre

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;