当两个表不匹配时,在两个表之间进行SQL减法

时间:2019-01-28 06:54:04

标签: sql-server

我有两个SQL select查询,它们返回两列,如下图所示。我想做的是从第一个查询的相关股票代码的UnsuppliedQty列中减去第二个查询的Total

您能在这里指导我使用不同的方法吗?

SQL Query

更新:使用下面的查询,我能够执行减法,但是当where子句与第一个表不匹配时,它会给出null。在这种情况下,我想返回它的原始值。

我该怎么做?

select stockcode, totalstock -(
   select UNSUP_QUANT
   from SALESORD_LINES 
   where stockcode='AIRFIL01' 
   and UNSUP_QUANT<>0 
   and dbo.STOCK_ITEMS.STOCKCODE = SALESORD_LINES.STOCKCODE) 
from STOCK_ITEMS 

1 个答案:

答案 0 :(得分:1)

您可以使用一个简单的Join,就像这样

;WITH SL
AS
(
    SELECT
        StockCode,
        UNSUP_QUANT = SUM(ISNULL(UNSUP_QUANT,0.00))
        FROM SALESORD_LINES
            WHERE ISNULL(UNSUP_QUANT,0.00) <> 0
            GROUP BY StockCode
)
SELECT
    SL.StockCode,
    TotalStock = SI.TotalStock - SL.UNSUP_QUANT
    FROM STOCK_ITEMS SI
        LEFT JOIN  SL 
            ON SL.StockCode = SI.StockCode