#sql #join #calculation
#sql #Присоединиться #вычисление
Вопрос:
Мне нужно запустить обновление таблицы SQL, используя значение из другой (но почти идентичной) строки в той же таблице, чтобы показать, как разыгрываются разные сценарии продаж.
например
Starting with:
ITEM, SITE, SUPPLIER, SCENARIO, SALES_VOLUME, PRICE, TOTAL_SALES
1 , A , X , S1 , 100 , 10 , 1000
2 , A , Y , S1 , 25 , 20 , 500
1 , A , X , S2 , {blank} , 20 , 0
I would like to update to show:
ITEM, SITE, SUPPLIER, SCENARIO, SALES_VOLUME, PRICE, TOTAL_SALES
1 , A , X , 1 , 100 , 10 , 1000
2 , A , Y , 1 , 25 , 20 , 500
1 , A , X , 2 , {blank} , 20 , 2000
Итак, в принципе, если SCENARIO = S2, мне нужно пересчитать, используя SALES_VOLUME, где SCENARIO = S1
Я попробовал следующее, но это не сработало — я думаю, потому что я пытаюсь указать оба =1 и !=1 в одном и том же поиске.
UPDATE TABLE1
SET [TOTAL_SALES] = (t1.[PRICE] * t2.[SALES_VOLUME])
FROM TABLE1 t1
inner join TABLE1 t2
on t1.[ITEM] = t2.[ITEM]
and t1.[SITE] = t2.[SITE]
and t1.[SUPPLIER] = t2.[SUPPLIER]
and t1.[SCENARIO] = 'S1'
WHERE t1.[SCENARIO] != 'S1'
Я не думаю, что я слишком далек, но просто чувствую, что чего-то не хватает.
Любые указатели будут получены с благодарностью. 🙂
Комментарии:
1. Пометьте свой вопрос базой данных, которую вы используете.
Ответ №1:
Вы можете попробовать это —
UPDATE t1
SET [TOTAL_SALES] = (t1.[PRICE] * t2.[SALES_VOLUME])
FROM TABLE1 t1
inner join TABLE1 t2
on t1.[ITEM] = t2.[ITEM]
and t1.[SITE] = t2.[SITE]
and t1.[SUPPLIER] = t2.[SUPPLIER]
and t1.[SCENARIO] = 'S2'
WHERE t2.[SCENARIO] = 'S1';
Комментарии:
1. Спасибо. Это была ссылка на таблицу, которая сбивала меня с толку в первой строке. Я отменил ваши последние 2 записи, и это сработало.