Обновление строк на основе выбора из той же таблицы - PullRequest
0 голосов
/ 02 января 2019

У меня есть база данных PervasiveSQL с таблицей затрат на продажу товаров, перечисленных в StoreCode. Данные выглядят как данные ниже

StoreCore   ItemCode                             LastPurchAmt
001         2201                                 78.75
002         2201                                  75.0
003         2201                                  75.0
05          2201                                   0.0
07          2201                                  75.0
08          2201                                 78.75
09          2201                                  75.0
10          2201                                  75.0

Они просили, чтобы я установил LastPurchAmt для каждого элемента = LastPurchAmt магазина 001.

Я прочитал больше примеров обновления и перепробовал больше вариантов для оператора обновления, чем мне хотелось бы запомнить, но я просто не могу этого понять.

Это утверждение:

Update MultiStoreTrn as UpdateTrn
join (select ItemCode, LastPurchAmt from MultiStoreTrn where StoreCode = '001') as ValueTrn
on UpdateTrn.ItemCode = ValueTrn.ItemCode
set UpdateTrn.LastPurchAmt = ValueTrn.LastPurchAmt
where UpdateTrn.StoreCode <> '001';

Возвращает сообщение об ошибке:

[LNA] [Pervasive] [ODBC Engine Interface] Для обновления необходимо указать имя таблицы или представления.

Этот код:

Update MultiStoreTrn as UpdateTrn
set UpdateTrn.LastPurchAmt = (Select LastPurchAmt from MultiStoreTrn where StoreCode = 001 and ItemCode = UpdateTrn.ItemCode);

Работает, но обновляет все значения до нуля

Я также пробовал этот код:

Update MultiStoreTrn
set MultiStoreTrn.LastPurchAmt = ValueTrn.LastPurchAmt
from (select ItemCode, LastPurchAmt from MultiStoreTrn where storecode = 001) as ValueTrn
where MultiStoreTrn.StoreCode <> 001 and MultiStoreTrn.ItemCode = ValueTrn.ItemCode;

Работает без ошибок, но ничего не обновляется.

Любые идеи, что мне не хватает: (

Спасибо, что читаете время и отвечаете ...

...