【问题标题】:How to subtract rows of similar columns and values from two datatables如何从两个数据表中减去相似列和值的行
【发布时间】: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 表中不存在。

标签: c# sql datatable


【解决方案1】:

SELECT STOCKOUTPARTNUM,STOCKOUTPARTNUM,NULL FROM TABLE 2 MINUS SELECT PARTNUM,NULL,PARTNUM FROM TABLE 1

DATATYPE 必须相同 STOCKOUTPARTNUM,PARTNUM

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    相关资源
    最近更新 更多