1

试图执行这个查询我有这个错误:

Update failed. 3810: Column/parameter 'edw_workarea.A.A' does not exist.

我正在使用 Teradata 数据库。

UPDATE A
FROM   EDW_WORKAREA.bs A,
       (
           SELECT stg.ccir_ind_id,
                  stg.orig_ccir_id
           FROM   EDW_WORKAREA.se stg
                  INNER JOIN best_svc bc
                       ON  stg.ccir_ind_id = bc.ccir_ind_id
           WHERE  stg.deliverability_score < '6'
                  AND stg.ccir_ind_id IN (SELECT stg.ccir_ind_id
                                          FROM   EDW_WORKAREA.se stg
                                          WHERE  stg.orig_ccir_id IS NULL
                                                 OR  stg.orig_ccir_id = ''
                                          GROUP BY
                                                 stg.ccir_ind_id
                                          HAVING COUNT(*) = 1)
       ) t

SET A.orig_ccir_id = t.orig_ccir_id
    WHERE A.ccir_ind_id = t.ccir_ind_id;

所有的表和列都存在于数据库中。并且 t 中的子查询单独成功执行。

任何人都可以指出错误在哪里吗?

4

1 回答 1

2

在 Teradata 上,您不应限定 SET 子句中的列,因此将 SQL 更改为:

update EDW_WORKAREA.bs
from (
    select ...
) t
set orig_ccir_id = t.orig_ccir_id
where EDW_WORKAREA.bs.ccir_ind_id = t.ccir_ind_id;
于 2013-09-06T13:08:49.160 回答