Function SQL Server到PostgreSQL求和函数

Function SQL Server到PostgreSQL求和函数,function,postgresql,Function,Postgresql,我已经为SQL Server编写了以下代码。 其目的是咨询其产品的任何账单,以及每件物品的总金额: Create procedure sp_cons_fact (@id_fact int) as Begin Select * from v_det_fact_art where id_fact=@id_fact Select sum(costo_x_art) as Tot_x_fact from v_det_fact_art where id_fact=@id_fac

我已经为SQL Server编写了以下代码。 其目的是咨询其产品的任何账单,以及每件物品的总金额:

Create procedure sp_cons_fact (@id_fact int) as
Begin
     Select * from v_det_fact_art where id_fact=@id_fact
     Select sum(costo_x_art) as Tot_x_fact
     from v_det_fact_art where id_fact=@id_fact
end
对于PostgreSQL,我将代码分为两个块。 第一个街区:

SELECT * 
    From v_det_fact_art 
    WHERE id_fact=id_factura ;
如果我将id\u factura更改为1,则显示:

第二个街区:

SELECT sum(costo_x_art) as Tot_x_Fact 
    From v_det_fact_art 
    WHERE id_fact = id_factura ;
如果我将id\u factura更改为1,则显示:

v_det_fact_art是一种具有以下特点的观点:

我希望得到的是:

如您所见,标记为tot_x_fact的列是每个id_fact元素(在本例中为id_fact元素1)的costo_x_艺术内容的总和

70003.22+300=70303.22在这两种情况下

非常感谢

以下是一个示例-

SELECT * FROM MYT;
 id | val 
----+-----
  1 |  10
  1 |  20
  1 |  30
  2 |  10
  2 |  40
(5 rows)

create function myfunc(x int) returns table (id int, value int, sum_val bigint)
as $$
 WITH TMP AS (
 SELECT sum(val) as Tot_x_Fact 
     From myt 
     WHERE id  = $1
     ) 
     select * from  myt vdfa CROSS JOIN tmp WHERE vdfa.id = $1;
  $$ LANGUAGE SQL;
CREATE FUNCTION
pgp=# SELECT MYFUNC(1);
  myfunc   
-----------
 (1,10,60)
 (1,20,60)
 (1,30,60)
(3 rows)


SELECT MYFUNC(2);
  myfunc   
-----------
 (2,10,50)
 (2,40,50)
(2 rows)

错误消息中有什么不清楚?您运行
SELECT
查询,但不使用结果。您的输出应该是什么样的?sum将只返回一个值,而另一个查询将返回一组行和列。您计划如何并排显示这些不同类型的输出?您有两个不同的结果集。你想用它们做什么?@Jayadevan我需要在v_det_fact_艺术视图中显示id_事实的内容。换句话说,显示与特定id_事实相关的所有寄存器。另外,我需要使用SUM函数来显示前一个id_事实寄存器的和。我想知道@zerkms是否有任何方法可以只使用一个函数来查看这两个结果集,尽管它对一些返回列有效。对于4个或更多列,它显示:错误:声明为返回记录的函数的返回类型与SQL状态不匹配:42P13详细信息:最后一句返回的列太多。上下文:SQL函数“myfunc”如果在函数中使用SELECT*,请将其替换为实际的列名。确保“returns table”(“有必要数量的占位符。谢谢!我在一列中只有两行,但这不是我想要的。我将更新我的帖子,使其变得清晰。请发布您现在获得的输出以及您期望的内容。我从您的代码中获得:”(1,45,“Jose Hdez.”,32,Sala,710000.4670003.22),“(1,45,”Jose Hdez.“,17,“电脑Hp”,6121.45728.7)“我用一张表格更新了我的帖子,表达了我的期望