如何使用联接表中的不同值来计算行

问题描述

我需要使用相同表中不同(但几乎相同)行中的值在sql表上运行更新,以显示不同的销售场景如何发挥作用。

例如

Starting with:
ITEM,SITE,supplier,SCENARIO,SALES_VOLUME,PRICE,TOTAL_SALES
1,A,X,S1,100,10,1000
2,Y,25,20,500
1,S2,{blank},0 

I would like to update to show:
ITEM,1,2,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';