Subquery returned more than 1 value

Рейтинг: 0Ответов: 1Опубликовано: 07.02.2023

у меня есть таблица Tickets в ней столбцы VozAG и CursValueAG оба тип данных real

в столбце VozAG есть значение 30 а в столбце CursValueAG 0.155

мне нужно сделать update столбца VozAG сделав разделение столбцов VozAG/CursValueAG

чтобы 30/0.155=‭193.55

сделал запрос но там выходит ошибка

update Tickets 
set VozAG=(Select (VozAG/CursValueAG) from Tickets ) 
where CurrencyID='2' and DEALDATE between '2022-12-19' and '2022-12-19'

Msg 512, Level 16, State 1, Line 1

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

The statement has been terminated.

Подскажите пожалуйста где моя ошибка.

Ответы

▲ 1Принят

Представьте таблицу. Подзапрос из старой таблицы рассчитывает колонку новой таблицы, и вы через update пытаетесь в каждую строку таблицы в ячейку VozAG записать эту рассчитанную колонку (в одну ячейку записать много ячеек). Такой update с подзапросом возможен только если подзапрос возвращает одно значение (в одну ячейку тогда запишется одно значение).

Тут в принципе не нужен подзапрос, просто пишите set VozAG=VozAG/CursValueAG:

update Tickets 
set VozAG = VozAG / CursValueAG
where CurrencyID='2' and DEALDATE between '2022-12-19' and '2022-12-19'