2016-02-24 2 views
0

Это запрос MySQL, теперь мне нужно это под динамическим запросом для выполнения в TERADATA SQL.Выполнение динамического выбора в строку в Teradata

set l_sql=concat('SELECT max(',l_rid_col,'), MAX(cid) INTO @c2, @c3 FROM ',p_database,'.',p_table); 

SET l_rid = @c2; 
SET l_cid = @c3; 

И это обновление запроса:

update table_a 
set row = ifnull(l_rid, 0), 
    column = ifnull(l_cid, 0) 
where databasename = p_database 
    and tablename = p_table; 

Но в Teradata я попробовал этот путь:

update table_a as a 
from (select max(l_rid) TR, MAX(l_cid) TCC 
     from DEVP.employees) as b 
set a.row = b.TR, a.column = b.TCC 
where a.databasename = 'DEVP' 
    and a.tablename = 'employees'; 
+1

Что у вас есть? – Trix

+1

и что случилось? Вы видели ошибку? или запрос дал разные результаты, чем вы ожидали? –

+1

Да, это ошибка: Выполняется как единый оператор. Ошибка [3993: HY000] Недопустимое использование псевдонима. Истекшее время = 00: 00: 00.015 Где я пропустил? @abhi –

ответ

0

я получил ответ:

update table_a from (select max(l_rid) TR, MAX(l_cid) TCC from DEVP.employees)as b 

set row= b.TR , column=b.TCC where databasename='DEVP' and tablename='employees'; 

ВОПРОС: Я только что удалил псевдоним в UPDATE. наконец, получил его.

0

Удалите псевдоним из LHS инструкции обновления. a.colA = b.colname должно быть colA = b.colname

 Смежные вопросы

  • Нет связанных вопросов^_^