sql - 如何在postgresql中的单个函数中编写多个查询

标签 sql postgresql function

我需要在 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/

相关文章:

json - Postgresql 复制在 pretty-print 的 JSON 上失败

r - 分解并替换省略号以获取参数名称

function - 调用 UDF 时公式中使用的值的数据类型错误

对象/哈希中的 Javascript 函数

mysql - sql 选择字符串与另一个表中定义的模式匹配的位置

sql - MongoDB中地理空间索引的内部机制

mysql - 使用 DELETE...WHERE NOT IN (SELECT) 删除无子父记录时如何避免超时

mysql - 如果我在使用 MYSQL 设计这个数据库时犯了任何错误,请告诉我

postgresql - 在 postgres 中更改和创建复合外键的语法

sql - 如何在 ActiveRecord 中为 SUM 添加 where 作用域?