我想在 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 以使其正确。