SQL Server - 根据另一个列值选择要更新的列

时间:2014-12-22 14:20:19

标签: sql sql-server

有一点疑问。

我有2个具有以下结构的表

状态表

S_ID | filename | addresscode | Total_Count | Vendor_Count | Co_Count | Cust_Count | Completion_Date

记录表

R_ID | filename | addresscode | Date | From | To | Quantity

我正在编写一个触发器,它根据插入记录表中的值更新Status stable的值。我希望发生以下情况(插入的故事是i,状态表是f):

更新状态表

  • 如果i.From ='供应商'然后SET Vendor_Count = f.Vendor_Count - i.Quantity
  • 如果i.From =' Co'然后SET Co_Count = f.Co_Count - i.Quantity
  • 如果i.From =' Cust'然后SET Cust_Count = f.Cust_Count - i.Quantity

  • 如果i.To ='供应商'然后SET Vendor_Count = f.Vendor_Count + i.Quantity

  • 如果i.To =' Co'然后SET Co_Count = f.Co_Count + i.Quantity
  • 如果i.To =' Cust'然后SET Cust_Count = f.Cust_Count + i.Quantity

我知道我必须使用Case,但我无法制定正确的语法。请帮忙。

如果可能的话,还有另一个(奖金)小查询 - 我应该怎么做 - >我想将状态表更新为

  • IF i.To =' Cust' &安培; IF(f.cust_count + i.quantity == f.total_count)SET Completion_Date = i.Date

1 个答案:

答案 0 :(得分:0)

假设i.From<> i。以下CASE为您提供所需的值

CASE 
    WHEN i.From = 'Vendor' THEN Vendor_Count - i.Quantity 
    WHEN i.To = 'Vendor' THEN Vendor_Count + i.Quantity 
    ELSE Vendor_Count 
END,
CASE 
    WHEN i.From = 'Co' THEN Co_Count - i.Quantity 
    WHEN i.To = 'Co' THEN Co_Count + i.Quantity 
    ELSE Co_Count 
END,
CASE 
    WHEN i.From = 'Cust' THEN Cust_Count - i.Quantity 
    WHEN i.To = 'Cust' THEN Cust_Count + i.Quantity 
    ELSE Cust_Count 
END

加成:

CASE 
    WHEN i.To = 'Cust' & IF (f.cust_count + i.quantity == f.total_count) THEN i.Date 
    ELSE Completion_Date
END