【问题标题】:Pgadmin-insert rows into table from other table by procedurepgadmin-通过过程将行从其他表中插入表中
【发布时间】:2014-12-10 11:34:05
【问题描述】:

我已经创建了表f_table,其中包含quartersums 列。显示错误为:

ERROR:  syntax error at or near "SELECT".

功能:

CREATE OR REPLACE FUNCTION func4()

RETURNS void AS

$BODY$

BEGIN

insert into f_table  values
(
SELECT

tab1.quarter,

sum(tab2.tot)

FROM 

tab1

INNER JOIN 

tab2

ON

tab1_key=tab2_key

GROUP BY(tab1.quarter)

order by (quarter) asc

distributed by(quarter));

END;

$BODY$

LANGUAGE plpgsql VOLATILE;

谁能帮我解决这个问题?提前致谢。

【问题讨论】:

  • 你的意思是tab1.key = tab2.key

标签: sql postgresql stored-procedures


【解决方案1】:

正确的语法是 INSERT..SELECT ,删除 VALUES。这仅在 f_table 有 2 列时有效,如果没有,则需要指定列

insert into f_table  (somecol,someothercol)
(
SELECT
tab1.quarter,
sum(tab2.tot)
FROM 
tab1
INNER JOIN 
tab2
ON
tab1.key=tab2.key
GROUP BY(tab1.quarter)
order by (tab1.quarter) asc
distributed by(tab1.quarter))

【讨论】:

  • ya "insert into values" 是错误。它只是 "insert into" 但随之而来的是 ERROR: syntax error at or near "DISTRIBUTED"
【解决方案2】:

解决了不需要分发的问题,因为它不是创建表,它只是一个插入。

删除分布后按其工作正常。

感谢您的回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    相关资源
    最近更新 更多