2017-02-16 61 views
1

这里是我的脚本,一旦我运行脚本,它返回单值colomn值(val1,val2,val3,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",)" 

林需要分离式柱的结果恢复不是一列..在哪里修改?

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

加影,马来西亚?嗨 – FreedomPride

+0

嗨兄弟你可以帮我...如何使用功能分开列 –

+0

没问题,但我正在调试自己你能显示输出列以及?这会更容易。 – FreedomPride

回答

3

尝试这种方式

SELECT * FROM meter_latest_read_custom();