Больше нет места в буфере Teradata при попытке обновления, выберите с помощью регистра - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь обновить таблицу до 388 000 строк.

Это запрос:

UPDATE DL_RG_ANALYTICS.SH_HISTORICO
        FROM 
        (
SELECT TIPO_MORA,
CASE TRAMOMORA
    WHEN '0' THEN 'VIGENTE'
    WHEN '1' THEN 'MORA BLANDA'
    WHEN '2' THEN 'MORA BLANDA'
    WHEN '3' THEN 'MORA BLANDA'
    WHEN '4' THEN 'MORA DURA'
    WHEN '5' THEN 'MORA DURA'
    WHEN '6' THEN 'MORA DURA'
    ELSE 'VIGENTE'
    END AS A
FROM DL_RG_ANALYTICS.SH_historico
) X
SET  TIPO_MORA = A

Я сделал обновление с несколькими столбцами, но не знать, как сделать это только с одним, и кейсом внутри выбора.

Любая помощь является ценной.

1 Ответ

2 голосов
/ 14 января 2020

вы не можете обновить ту же таблицу, читая ее как подзапрос. Кроме того, обычно, если вы объединяете две таблицы, полезно написать в сообщении where объединение, в противном случае вы получите кошелек декартовых произведений и план выполнения.

Попробуйте с этим:

UPDATE DL_RG_ANALYTICS.SH_HISTORICO
SET
TIPO_MORA = CASE TRAMOMORA WHEN '0' THEN 'VIGENTE'
                           WHEN '1' THEN 'MORA BLANDA'
                           WHEN '2' THEN 'MORA BLANDA'
                           WHEN '3' THEN 'MORA BLANDA'
                           WHEN '4' THEN 'MORA DURA'
                           WHEN '5' THEN 'MORA DURA'
                           WHEN '6' THEN 'MORA DURA'
                           ELSE 'VIGENTE'
            END;

Надеюсь, это поможет.

...