SQL-команда для обновления уровней и количества повторного заказа на основе проданного запаса с года на дату или между двумя датами

Я попытался добавить следующее в свою Утилиту базы данных в IQ Retail, но это не сработало.

update Stock
set MIN_LVL=UnitsYearToDate/5
set ORD_QUANT=UnitsYearToDate/5*3
where (only using one of the following)
REGULAR_SU='xxx'
or
SUBDEPARTM='xxx'
or
CODE between 'xxx' and 'xxx'

Я получаю эту ошибку

"Ошибка DBISAM Engine # 11949 Ошибка синтаксического анализа SQL - ожидаемый конец оператора, но вместо этого он найден установленным в операторе UPDATE SQL в строке 3, столбец 1"

У меня нет знаний по программированию, я просто пытаюсь помочь себе из-за своего удаленного местоположения. Буду признателен за любые советы о том, как я могу обновить минимальные уровни заказа и количество заказов в определенных партиях для примерно 12000 наименований.

Я использую упакованную утилиту базы данных в программном обеспечении IQ Retail.

3 ответа

Попробуйте ниже - вам не нужно определять множество несколько раз, просто используйте один набор и определите несколько столбцов, используя запятую (,)

update Stock set MIN_LVL=UnitsYearToDate/5,ORD_QUANT=UnitsYearToDate/5*3 
where REGULAR_SU='xxx' or SUBDEPARTM='xxx' or CODE between 'xxx' and 'xxx'

Ваш синтаксис работает. множественный SET должен быть разделен запятой:

update Stock
set MIN_LVL=UnitsYearToDate/5, ORD_QUANT=UnitsYearToDate/5*3
where 
REGULAR_SU='xxx'
or
SUBDEPARTM='xxx'
or
CODE between 'xxx' and 'xxx'

Как заявляли другие, синтаксис неверен, и если у вас есть несколько SET, вам нужно будет разделить их запятой. Порядок выполнения DBISAM может быть другим, это также необходимо учитывать. Обратитесь к этой документации для инструкции UPDATE.

Попробуйте этот код

UPDATE Stock SET MIN_LVL = 2, ORD_QUAN = 3 FROM Stock WHERE SUBDEPARTM = '0002';

Другие вопросы по тегам