我需要在 Postgresql 中编写一个函数,该函数将返回一个包含三列的表。这三列将由三个不同的查询填充。 我想知道如何将这三个查询组合到一个函数中。
CREATE OR REPLACE FUNCTION ytd(MMYY character varying, MMYY1 character varying)
RETURNS TABLE(name character varying, ratio bigint, ratio1 bigint) AS
$BODY$
BEGIN
RETURN query
SELECT col1 as name from t1,
Select col2 as ratio from t2,
Select col3 as ratio1 from t3
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION ydt2(MMYY character varying, MMYY1 character varying)
OWNER TO postgres;
每个sql中都会传递相同的参数
最佳答案
如果您JOIN
这三个数据集的方法是不相关的(正如您所说,它们是不相关的),那么合并这三个数据集应该是非常简单的(参见 SQL Fiddle )。
这个 SQL(如下)应该用一个例子来说明:
CREATE TABLE a (a1 INTEGER);
CREATE TABLE b (b1 INTEGER);
CREATE TABLE c (c1 INTEGER);
INSERT INTO a VALUES(11), (12);
INSERT INTO b VALUES(21), (22);
INSERT INTO c VALUES(31), (32);
WITH
aa AS (SELECT row_number() OVER () AS r, * FROM a),
bb AS (SELECT row_number() OVER () AS r, * FROM b),
cc AS (SELECT row_number() OVER () AS r, * FROM c)
SELECT r, a1, b1, c1
FROM aa
JOIN bb
USING (r)
JOIN cc
USING (r)
关于sql - 如何在postgresql中的单个函数中编写多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31454616/