2017-02-16 1 views
1

私のスクリプトは、スクリプトを実行すると、val1、val2、val3、bla..bla blaのような値を持つ単一列に戻ります...PostgreSQL関数()を使用して区切られた列で返す方法

CREATE OR REPLACE FUNCTION meter_latest_read_custom() 
RETURNS TABLE(
    maxdate timestamp without time zone, 
    ertu integer, 
    meter integer, 
    meter_name character varying, 
    acq_9010 numeric) 
AS 
$BODY$ 
DECLARE 
    formal_table text; 
BEGIN 
    FOR formal_table IN 
    SELECT 
     quote_ident(table_name) 
    FROM 
     information_schema.tables 
    WHERE 
     table_schema = 'public' AND 
     table_name LIKE 'task%_1' 
    LOOP 
     RETURN QUERY EXECUTE 
     'with groupedft as (
     SELECT meter_id, MAX(acq_date) AS MaxDateTime 
      FROM ' ||formal_table|| ' GROUP BY meter_id), 
     foo as (
     SELECT 
      ft.acq_date AS maxdate, 
      ft.ertu_id AS ertu, 
      ft.meter_id AS meter, 
      ft.acq_9010 AS acq_9010 
     FROM 
      '||formal_table|| ' ft 
     INNER JOIN groupedft 
     ON 
      ft.meter_id = groupedft.meter_id 
      AND ft.acq_date = groupedft.MaxDateTime) 
     SELECT 
     maxdate, ertu, meter, m.meter_name, acq_9010 
     FROM 
     foo 
     LEFT JOIN 
     meter_record m 
     ON 
     foo.meter=m.meter_id 
     AND foo.ertu=m.ertu_id'; 

    END LOOP; 
END 
$BODY$ 
    LANGUAGE plpgsql VOLATILE 
    COST 100 
    ROWS 1000; 
ALTER FUNCTION meter_latest_read_custom() OWNER TO postgres; 

結果は、単一の列に復帰

"("2017-02-16 10:45:00",201,6,"SPARE 6",)" 
"("2017-02-16 10:45:00",201,14,"SPARE 14",)" 
"("2017-02-16 10:45:00",201,8,"SPARE 8",)" 
"("2017-02-16 10:45:00",201,12,"SPARE 12",)" 
"("2017-02-16 10:45:00",201,1,"E.CO-PUAS KAJANG/AC PANEL ETS",16986.00000)" 
"("2017-02-16 10:45:00",201,2,"SPARE 2",)" 
"("2017-02-16 10:45:00",201,3,"SPARE 3",)" 
"("2017-02-16 10:45:00",201,10,"SPARE 10",)" 
"("2017-02-16 10:45:00",201,11,"SPARE 11",)" 
"("2017-02-16 10:45:00",201,4,"SPARE 4",)" 

イムはそれを修正するために...区切ら列でない1列に結果の返却を要求されます。?

------------------------------------------------------------------- 
| maxdate | ertu | meter | meter_name | acq_9010 | 
------------------------------------------------------------------- 
|   |   |   |    |    | 
|   |   |   |    |    | 
|   |   |   |    |    | 
|   |   |   |    |    | 
|   |   |   |    |    | 
|   |   |   |    |    | 
|   |   |   |    |    | 
|   |   |   |    |    | 
+0

カジャン、マレーシアのこの方法を試してみてください?こんにちは – FreedomPride

+0

こんにちは仲間は私を助けることができます...機能を使用して列を分離する方法 –

+0

問題はありませんが、自分自身をデバッグしているだけでなく、出力列も表示できますか?それはより簡単だろう。 – FreedomPride

答えて

3

SELECT * FROM meter_latest_read_custom(); 
関連する問題