teradata - 在 Teradata SQL 中使用 for 循环
问题描述
我想在 teradata SQL/MACRO 或 PROCEDURE 中执行此操作:
CREATE MACRO insertloop ( val1 VARCHAR( 1000)) AS
(
sublist_i = ' SELECT sublist from table3 '
FOR sublist_i in sublist :
INSERT INTO table5
SELECT t.id, t.address, sum(t.amount)
FROM table2 AS t
WHERE
t.id in sublist_i
AND t.address = :val1
GROUP BY t.id t.address
);
解释:
table3 contains list of id (by block of 1000 id)
(12, 546, 999)
(45,789)
(970, 990, 123)
主要原因 :
table2 非常庞大(10 亿条记录)。
全连接需要太多内存,我们需要创建一个表 table3 包含不相交的 id 列表并在此列表上迭代。
但是,我不确定如何纠正这个 MACRO 以使其正确。
解决方案
推荐阅读
- java - Gson 解析响应以获取通用类
- android - BattlegroundMobile之类的应用如何在没有存储权限的情况下访问obb?
- vba - WebBrowser 控件适用于 Office 2010,但不适用于 Office 365 / 2016
- html - HTML CSS 悬停位置未与容器对齐
- redhat - Linux中的SWAP和Virtual mmeory有什么区别
- sql - 变更数据捕获 - 监控单列
- qt - QNetworkReply 正在读取数据时,QMainWindow 关闭按钮处于非活动状态
- python - 如何在 Selenium Webdriver 上为 python 中的 chrome 设置 luminati 代理?
- swift - Swift:面向协议的方法期间出错。错误:无法将“I.Job”类型的返回表达式转换为“ActualJob”类型
- google-bigquery - 如何在 Google BigQuery 中的 CREATE OR REPLACE TABLE 之后立即执行 INSERT INTO 语句