我有两张桌子,下面有例子
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吗?
答案 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 . . . select
,join
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不在结果中。请注意,我还使用完整日期进行比较。