利用SQL语句计算库存

本文介绍了如何使用SQL语句,结合isnull函数处理数据库中null值,将其转换为0,进而准确进行库存的计算操作。
计算库存量:
SELECT TOP 100 PERCENT dbo.Office_In.InCode, dbo.Office_In.InDate, 
      dbo.Office_In.ComCode, dbo.Office_In.TypeCode, dbo.Office_In.OName, 
      dbo.Office_In.Spec, dbo.Office_In.Unit, dbo.Office_In.Qty, dbo.Office_In.Price, 
      dbo.Office_In.Provider, dbo.Office_In.Master, dbo.Office_In.Note, 
      dbo.Company.ComName, dbo.Office_Type.TypeName, dbo.Office_In.Qty 
-
          (
SELECT isnull(SUM(Office_Out.Qty), 0)
         
FROM Office_Out
         
WHERE Office_In.InCode = Office_Out.InCode) AS Stock,
          (
SELECT isnull(SUM(office_out.qty), 0)
         
FROM office_out
         
WHERE office_in.inCode = office_out.incode) AS outQty
FROM dbo.Office_Type INNER JOIN
      dbo.Office_In 
ON 
      dbo.Office_Type.TypeCode 
= dbo.Office_In.TypeCode LEFT OUTER JOIN
      dbo.Company 
ON dbo.Office_In.ComCode = dbo.Company.ComCode
ORDER BY dbo.Company.ComName, dbo.Office_Type.TypeName

        在这个SQL语句,主要是利用isnull函数,将从数据库中查询到的为null的值,转化为0,之后利用减法,将库存计算出来。
附:结构表

/****** 对象:表 dbo.Office_In ******/
/****** 说明:办公用品入库表 ******/
If Exists (Select * From sysobjects where id = object_id('dbo.Office_In'))
Drop Table dbo.Office_In
GO
Create Table Office_In(
    InCode 
varchar(12Not Null Primary key,--入库编号
    InDate smalldatetime Not Null,        --入库日期
    ComCode varchar(4Not Null,        --公司单位代码
    TypeCode varchar(4Not Null,        --种类代码
    OName varchar(50Not Null,        --办公用品名称
    Spec varchar(50Null,            --规格
    Unit varchar(10Null,            --单位
    Qty Int Not Null,            --数量
    Price Numeric(8,2Not Null,        --单价
    Provider varchar(50Null,        --购买单位
    Master varchar(20Not Null,        --经办人
    Note Varchar(100Null            --备注
)
GO
ALTER TABLE dbo.Office_In ADD 
    
CONSTRAINT FK_Office_In_ComPany FOREIGN KEY 
    (
        ComCode
    ) 
REFERENCES dbo.Company (
        ComCode
    ),
    
CONSTRAINT FK_Office_In_Type FOREIGN KEY 
    (
        TypeCode
    ) 
REFERENCES dbo.Office_Type (
        TypeCode
    )
GO
    

/****** 对象:表 dbo.Office_Out ******/
/****** 说明:办公用品领用表 ******/
If Exists (Select * From sysobjects where id = object_id('dbo.Office_Out'))
Drop Table dbo.Office_Out
GO
Create Table Office_Out(
    OutCode 
varchar(12Not Null Primary key,--领用编号
    ComCode varchar(4Not Null,        --公司单位代码
    InCode varchar(12Not Null,        --入库编号
    OutDate smallDatetime Not NUll,        --领用日期
    Qty Int Not Null,            --数量
    Master varchar(20Not Null,        --经办人
    Note Varchar(100Null            --备注
)
GO
ALTER TABLE dbo.Office_Out ADD 
    
CONSTRAINT FK_Office_Out_ComPany FOREIGN KEY 
    (
        ComCode
    ) 
REFERENCES dbo.Company (
        ComCode
    ),
    
CONSTRAINT FK_Office_Out_In FOREIGN KEY 
    (
        InCode
    ) 
REFERENCES dbo.Office_In (
        InCode
    )
GO
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值