Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Arrays PLpgSQL:将每条记录存储在For循环中并返回json_Arrays_Json_Postgresql_Plpgsql - Fatal编程技术网

Arrays PLpgSQL:将每条记录存储在For循环中并返回json

Arrays PLpgSQL:将每条记录存储在For循环中并返回json,arrays,json,postgresql,plpgsql,Arrays,Json,Postgresql,Plpgsql,我试图将记录或json存储到数组中,并从函数返回json: CREATE OR REPLACE FUNCTION stat_per_day() RETURNS json AS $$ DECLARE RR RECORD; SS json[]; BEGIN FOR RR IN (SELECT DISTINCT date FROM timetable WHERE date<CURRENT_DATE ORDER BY date ASC) LOOP SELECT ro

我试图将记录或json存储到数组中,并从函数返回json:

CREATE OR REPLACE FUNCTION stat_per_day() RETURNS json AS $$
DECLARE 
RR RECORD;
SS json[];
BEGIN
  FOR RR IN (SELECT DISTINCT date 
      FROM timetable WHERE date<CURRENT_DATE ORDER BY date ASC)
  LOOP
    SELECT row_to_json(A) INTO SS FROM (SELECT RR.date as Dia, count(*) Total
    FROM dates WHERE office_date=RR.date) A;
  END LOOP;
  RETURN json_agg(SS);
END; $$
LANGUAGE plpgsql;

查询稍微复杂一点,但想法是将每个forloop查询保存在我认为不存在的json数组或记录数组中,循环后,从数组返回一个完整的json。

是否不需要循环?此任务可以使用json_build_对象函数完成,类似于:

CREATE OR REPLACE FUNCTION stat_per_day() RETURNS json AS $$
DECLARE 
SS json;
BEGIN
    select json_agg(j order by (j->>'dia')::date) from (
        SELECT json_build_object('dia', office_date, 'Total', count(*) ) as j 
        from dates
        where 
        office_date in (SELECT date FROM timetable WHERE date<CURRENT_DATE)
        group by office_date
    ) t
    into SS;

    RETURN SS;
END; $$
LANGUAGE plpgsql;

也许你不需要循环?此任务可以使用json_build_对象函数完成,类似于:

CREATE OR REPLACE FUNCTION stat_per_day() RETURNS json AS $$
DECLARE 
SS json;
BEGIN
    select json_agg(j order by (j->>'dia')::date) from (
        SELECT json_build_object('dia', office_date, 'Total', count(*) ) as j 
        from dates
        where 
        office_date in (SELECT date FROM timetable WHERE date<CURRENT_DATE)
        group by office_date
    ) t
    into SS;

    RETURN SS;
END; $$
LANGUAGE plpgsql;