尝试更新时 Teradata 中不再有假脱机 space,select 有大小写

No more spool space in Teradata while trying Update, select with case

我正在尝试更新一个 table 有很多行 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

我对多列进行了更新,但我不知道如何仅使用一列和 select 中的一个案例进行更新。

感谢任何帮助。

在将其作为子查询读取时,您不能更新相同的 table。 此外,通常情况下,如果您要连接两个 table,最好在 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;

希望对您有所帮助。