我对create table有一个查询,如下所示
DROP TABLE IF EXISTS BAJUL;
CREATE TABLE BAJUL AS (
SELECT dt_trx, row_number() OVER (ORDER BY dt_trx DESC) AS row_number
FROM stock_trx_idx
WHERE dt_trx BETWEEN '2017-01-01' AND '2017-02-28'
GROUP BY 1
ORDER BY 1 DESC);
如何在Postgresql中创建具有存储功能的上表? 我试过下面的脚本
CREATE OR REPLACE FUNCTION my_function (dt1 DATE, dt2 DATE)
RETURNS VOID AS
$func$
BEGIN
EXECUTE format('
DROP TABLE IF EXISTS tblq;
CREATE TABLE IF NOT EXISTS tblq AS(
SELECT dt_trx, row_number() OVER (ORDER BY dt_trx DESC) AS row_number
FROM stock_trx
WHERE dt_trx BETWEEN dt1 AND dt2
GROUP BY 1
ORDER BY 1 DESC
)' );
END
$func$ LANGUAGE plpgsql;
但是当我尝试执行下面的SF时
SELECT my_function ('2017-01-01', '2017-02-28');
我收到了错误 - >错误:列" dt1"不存在
想寻求你的帮助。
谢谢& RGDS, 鲅鱼
答案 0 :(得分:1)
使用
Night_Shift_End
答案 1 :(得分:0)
你的错误是显而易见的。在SELECT语句中,
SELECT dt_trx, row_number() OVER (ORDER BY dt_trx DESC) AS row_number
FROM stock_trx
WHERE dt_trx BETWEEN dt1 AND dt2
GROUP BY 1
ORDER BY 1 DESC
dt1列不存在。你没告诉他你想用你的变量。尝试将字符串与变量连接起来。
顺便说一句,如果您使用该语句创建表,则可以删除ORDER BY。