Используйте для цикла в Teradata SQL - PullRequest
0 голосов
/ 30 августа 2018

Я хотел бы сделать это в терадате SQL / MACRO или ПРОЦЕДУРА:

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 очень огромен (1 миллиард записей).

Полное соединение требует слишком много памяти, нам нужно создать таблицу table3, содержащую непересекающийся список идентификаторов и итерации по этому списку.

Но я не уверен, как исправить эту МАКРО, чтобы исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...