使用新日期将表的总和添加到其中一个表中

时间:2015-11-01 12:47:51

标签: sql sql-server

我有两张桌子,下面有例子

tblOrders

ID   Quantity
ABC  5    
XYZ  25
MNO  -50
WWL  -35

tblHoldings

Date   ID   Quantity
2-Jan  ABC  100    
2-Jan  PPP  12
2-Jan  MNO  200
2-Jan  WWL  35

我需要做的是从tblHoldings获取当前的资产,并添加来自tblOrders&的数据。使用新日期将结果插入到tblHoldings中。所以结果应如下所示。请注意,WWL的数量为零,因此新日期应该有WWL的新记录。

tblHoldings

Date   ID   Quantity
2-Jan  ABC  100    
2-Jan  PPP  12
2-Jan  MNO  200
2-Jan  WWL  35
3-Feb  ABC  105    
3-Feb  PPP  12
3-Feb  MNO  150
3-Feb  XYZ  25   

这甚至可以仅使用SQL吗?

2 个答案:

答案 0 :(得分:3)

尝试这样的查询:

INSERT INTO tblHoldings (Date, ID, Quantity)
SELECT '3-Feb', h.ID, h.Quantity + COALESCE(o.Quantity, 0)
FROM tblHoldings h LEFT JOIN tblOrders o ON h.ID = o.ID
WHERE h.Quantity <> o.Quantity

我们的想法是使用SELECT语句来获取您需要的数据,然后使用该选择将数据插入到馆藏表

答案 1 :(得分:1)

我不知道你是否想在输出中使用WWL。但基本想法是insert . . . selectjoin

insert into tblHoldings(date, id, quantity)
    select '2015-02-03', id, (h.quantity + o.quantity)
    from tblHoldings h join
         tblOrders o
         on h.id = o.id
    where h.date = '2015-01-02' and
          (h.quantity + o.quantity) <> 0

最终条件只是存在,因此WWL不在结果中。请注意,我还使用完整日期进行比较。