问题描述
我需要使用相同表中不同(但几乎相同)行中的值在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';