如何使用来自连接 table 的不同值计算行

How to calculate row using different value from joined table

我需要 运行 SQL table 的更新,使用同一 table 中不同(但几乎相同)行的值,以展示不同的销售场景如何发挥作用。

例如

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'

我不觉得我离得太远了,只是觉得我错过了什么。

如有指点,将不胜感激。 :)

你可以试试这个 -

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';