amazon-web-services - 将变量放入 Redshift 存储过程中的 INSERT 语句中
问题描述
我有以下插入查询:
insert into stage(
SELECT emp.emp_id,
LISTAGG(DISTINCT(group.group_name), ','),
LISTAGG(DISTINCT(emp.name), ','),
LISTAGG(DISTINCT(emp.date_hired), ',')
FROM employee emp
JOIN employee_group group ON group.id = emp.group_id
WHERE emp.employed = 1
AND emp.type = 3
AND emp.date_hired >= dateadd(day, -2, current_date)
GROUP BY emp.emp_id
);
我想将它添加到一个存储过程中,它在一个具有不同值的表中循环emp.type
像这样的东西(假设类型是之前声明的):
FOR employee_type IN SELECT * FROM employee_types LOOP
EXECUTE 'INSERT into stage( SELECT emp.emp_id, LISTADD(DISTINCT(group.group_name), ','), LISTAGG(DISTINCT(emp.name), ','), LISTAGG(DISTINCT(emp.date_hired), ',') FROM employee emp JOIN employee_group ON group.id = emp.group_id WHERE emp.employed = 1 AND emp.type = ' || quote_literal(employee_type.type) ||' AND emp.date_hired >= dateadd(day, -2, current_date) GROUP BY emp.emp_id );';
每当我尝试运行它时,我都会收到一条错误消息[Amazon](500310) Invalid operation: query "SELECT 'INSERT ....'" returned 4 columns
我在这里缺少什么吗?我查看了 Redshift 文档,这应该可以。我不明白为什么它试图运行 select,或者为什么它抱怨返回 4 列。
解决方案
推荐阅读
- javascript - 如何使用 JavaScript 获取文档信息
- sql - 无法在 IBM db2 上运行查询
- java - 如何将弹性查询传递给 kibana 仪表板
- c# - .net 核心中似乎不存在 Debug.Listeners
- typescript - npm-Typescript 安装
- batch-file - 如何将多个目录中的多个文件添加到 svn 更改列表中?
- typescript - WebStorm 中 TypeScript 类型的缩进
- mysql - 如何在 mysql 命令的 bash 中最好地使用声明的变量?
- android - 获取知道其 IP 的本地网络设备的 MAC 地址
- jquery - 嵌套转发器中的jquery数据表