Я postgres, вот мой запрос
update cust_final_1 as cust set cust.enure_days=datediff(day,1date,current_date)
from card as card join cust_final_1 as cust on cust.cust_id=card.cardh_cust_id
left join bt_time as tim on card.cardh_act_dt=tim.time_id
при выполнении выдает ошибку как неправильный синтаксис рядом с "как"
Что за ошибка
Ответ 1 · Radu Gheorghiu
Это должно сработать для вас:
UPDATE cust
SET cust.enure_days = datediff(day, 1 DATE, CURRENT_DATE)
FROM card AS card
INNER JOIN cust_final_1 AS cust
ON cust.cust_id = card.cardh_cust_id
LEFT JOIN bt_time AS tim
ON card.cardh_act_dt = tim.time_id
Просто замените имя таблицы псевдонимом сразу после ключевого слова UPDATE.
Ответ 2 · mlinth
Не уверен, что означают ваши столбцы, но вот. Я предполагаю, что "1date" - это дата, с которой вы хотите получить разницу.
UPDATE cust_final_1
SET enure_days=current_date - "1date" -- datediff is not postgresql, just subtract if they are both dates
FROM card
left join bt_time as tim on card.cardh_act_dt=tim.time_id
WHERE cust_final_1.cust_id=card.cardh_cust_id
Я также с подозрением отношусь к левому соединению. Зачем это делать? Если в bt_time нет соответствующей записи, а в этой таблице есть "1date", вы обновляете запись со значением NULL. Я бы предложил использовать INNER JOIN, что означает, что отсутствующие записи ничего не делают.