【发布时间】:2017-11-23 11:45:40
【问题描述】:
如何从两个 sql 数据表中减去值?在图片中,我有两个数据表,我想首先匹配 table1“partnum”列,如果它与表 2“partnum”匹配,则从 table2“FinalStockout”中减去 table1“FinalstockIN”值,然后将其显示在另一列中。
我从其他人的建议中尝试过,但这也没有显示完整的数据。
with spare_parts as (
SELECT s.partnum,partdesc,partmodel,stockin,dateofstockin, (SELECT
SUM(stockin)
FROM Tbl_SpareParts
GROUP BY partnum
HAVING partnum = s.partnum) AS FinalTotalStockIN FROM Tbl_SpareParts s
),
cases as (
SELECT
b.partnum,partdesc,partmodel,outstock,outstockdate,
outstockcaseid_billnum,remarks, (SELECT SUM(outstock)
FROM Tbl_OutCaseID
GROUP BY partnum
HAVING partnum = b.partnum) AS FinalTotalStockOut FROM Tbl_OutCaseID b
)
select
s.partnum, s.partdesc, s.partmodel, s.stockin,
s.dateofstockin, s.FinalTotalStockIN,
c.partnum AS Stockoutpartnum,
c.partdesc AS Stockoutpartdesc,
c.partmodel AS stockoutpartmodel, c.outstock,
c.outstockdate, c.outstockcaseid_billnum,
c.remarks, c.FinalTotalStockOut
from
spare_parts s
join cases c on s.partnum = c.partnum
【问题讨论】:
-
使用连接将两个数据集拼接在一起,然后使用表达式为每一行从另一个字段中减去一个字段 - 这是 SQL 101 this
-
相关子查询提示:跳过 GROUP BY,执行 WHERE 而不是 HAVING。
-
我得到了减号列,但无法得到整行。也尝试使用 where 子句,我忘了提到 finalstockin 和 finalstock out 在我的 sql 表中不存在。