問題 :
表1
CatId - - Type - - Qty
==============================
8 || O || 10
8 || N || 20
8 || U || 30
30 || N || 5
30 || O || 15
30 || NULL || 25
表2
catId -- Old - -New -- Useless -- Other
========================================
8 || 100 || 70 || 140 || 110
30 || 10 || 20 || 30 || 50
結果: 表 2 を表 1 のように更新します。
-------------------------------------------------
catId -- Old -- New -- Useless -- Other
8 || 90 || 50 || 110 || 110
30 || 5 || 5 || 30 || 25
どのように結果が来るか:
表 1 と表 2 には共通の列 CatId があります。
Column of table 1 Type is connects with Table2
AS (Old - O / New - N / Useless - U / Other - NULL)
table2(それぞれの O/N/U/Other) = table2(それぞれの O/N/U/Other) - table1(Type) のように減算し、ループのないソリューションを優先します
私はこれを試しましたが、正しく動作しません -
Update Table2
Set New = New - (CASE Type WHEN 'N' THEN (Table1.qty) Else 0 End),
Old = Old - (CASE Type WHEN 'O' THEN (Table1.qty) Else 0 End),
Old = Old - (CASE Type WHEN 'O' THEN (Table1.qty) Else 0 End),
Other= Othere- (CASE Type WHEN is Null THEN (Table1.qty) Else 0 End)
from table1
inner join table2
On table1.catId = table2 .catId