Sql server 如何求两表和列的减法值

Sql server 如何求两表和列的减法值,sql-server,Sql Server,我的要求是我想减去d。在m.Item\u Qty列中使用\u Qty,检查此项。您可以按添加组 CREATE PROCEDURE M_SelectStockIN @FarmID int, @ItemName varchar(50), @InType varchar(5) AS /* SET NOCOUNT ON */ select (sum((m.Item_Qty)) - sum(d.Use_Qty)) As InStock,

我的要求是我想减去
d。在
m.Item\u Qty
列中使用\u Qty
,检查此项。您可以按添加组

CREATE PROCEDURE M_SelectStockIN
    @FarmID int,
    @ItemName varchar(50),
    @InType varchar(5)
AS
    /* SET NOCOUNT ON */ 
    select 
       (sum((m.Item_Qty)) - sum(d.Use_Qty)) As InStock,
       sum(d.Use_Qty) as total 
    from 
       MoryaSales m 
    inner join 
       DailyFarmEntry d on m.batchID = d.FarmID 
    where 
       m.batchID = @FarmID 
       and d.FarmID = @FarmID 
       and m.Tr_Type = @InType 
       and d.In_Type = @InType 
       and m.Item_Name = @ItemName 
       and d.ItemName = @ItemName

    RETURN
更新这是供您理解的示例

CREATE PROCEDURE M_SelectStockIN
    @FarmID int,
    @ItemName varchar(50),
    @InType varchar(5)
AS
BEGIN        
/* SET NOCOUNT ON */ 
        select (sum((m.Item_Qty)) - total) As InStock,
        *
        from
        (
            select 
               --you can add "batchID,  tr_type" field to understand more.
               --(sum((m.Item_Qty)) - sum(d.Use_Qty)) As InStock,
               sum(d.Use_Qty) as total 
            from 
               MoryaSales m 
            inner join 
               DailyFarmEntry d on m.batchID = d.FarmID 
            where 
               m.batchID = @FarmID 
               and d.FarmID = @FarmID 
               and m.Tr_Type = @InType 
               and d.In_Type = @InType 
               and m.Item_Name = @ItemName 
               and d.ItemName = @ItemName
        ) a
END

显示一些示例数据??问题在哪里???这是程序的功能。请把整件事告诉法官。问题出现在哪一行?是否可以在外部查询中使用内部查询的别名来获取数据
    declare @item table( id int IDENTITY(1,1) NOT NULL, name varchar(50), item_qty int)
    declare @DailyFarmEntry table( id int IDENTITY(1,1) NOT NULL, itemid int, Use_Qty int)


    insert into @item values    ('a',10),('b', 20),('c', 30),('d', 40),('e', 50)--, ('a',10)
    insert into @DailyFarmEntry values  (1,2),(2, 4),(3,6),(4,8),(1,3)

    select * from @item i
    inner join @DailyFarmEntry df on i.id = df.itemid

    --create procedure 
    --(
    declare @itemid int = 1
    --)
    --as
    select 
        name,   
        SUM(i.item_qty) as total_qty,
        SUM(df.Use_Qty) as used_total_qty,
        SUM(i.item_qty) - SUM(df.Use_Qty) as remain_qty
    from 
        @item i
    inner join @DailyFarmEntry df on i.id = df.itemid
    --and itemid = @itemid
    group by name