Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PostgreSQL函数()在分隔列中返回_Sql_Postgresql_Function - Fatal编程技术网

如何使用PostgreSQL函数()在分隔列中返回

如何使用PostgreSQL函数()在分隔列中返回,sql,postgresql,function,Sql,Postgresql,Function,这是我的脚本,一旦我运行脚本,它将以单列形式返回,其值如下(val1,val2,val3,bla..bla bla 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 nume

这是我的脚本,一旦我运行脚本,它将以单列形式返回,其值如下(val1,val2,val3,bla..bla bla

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",)"
Im要求在单独的列中返回结果,而不是在一列中。在哪里修改它?

-------------------------------------------------------------------
| maxdate   |    ertu   |   meter    |   meter_name |   acq_9010  |
-------------------------------------------------------------------
|           |           |            |              |             |
|           |           |            |              |             |
|           |           |            |              |             |
|           |           |            |              |             |
|           |           |            |              |             |
|           |           |            |              |             |
|           |           |            |              |             |
|           |           |            |              |             |
这样试试

SELECT * FROM meter_latest_read_custom();

马来西亚Kajang?hihi bro你能帮我吗…如何使用functionCan分离列没有问题,但我正在自己调试。你能不能也显示输出列?这会更简单。@FreedomPride Hi,我已经更新了我的帖子…你能检查我想要的吗。。