进销存报表查询统计的几种sql语句

示例说明:本示例是SqlServer数据库查询药品的进销存数据

1、表说明
    Inigoodsstocks 期初库存表:存放使用系统之前的原有商品库存数量和金额,可以理解为结转库存
    BillsDetail 单据明细表:存放各商品进销存明细数据(注意,我表里面出的数据存的是负数,入的存的是正数)
    Store 库存表:存放各商品库存数量和金额
    Commodity 商品表:存放商品资料数据
    CommodityCode 商品编码表:存放商品编码,价格,单位等数据
    Warehouse 仓库表:存放仓库资料数据
    Suppliers 供应商表:存放供应商资料数据

2、注意事项

    因为我BillsDetail单据明细表里面存放的有正负数(入:正数,出:负数),如果你存的都是正数,要自行处理一下:需把各出库数据转换成负数进行计算。期初时间是个固定日期时间,应根据自己的实际期初时间(期初库存结转日期时间)自行调整

3、sql代码
    方式一:用WITH关键字将各数据先存临时表,然后再关联查询各临时表数据。

WITH 
        --先把各数据存到对应临时表,如下面的:qc AS (SELECT P_id,S_id,批号,Supplier_id,SUM(数量) AS 期初数量,SUM(数量*含税价) AS 期初含税金额 FROM dbo.Inigoodsstocks),就是查出期初数据放到qc这个临时表里面
        qc AS (SELECT P_id,S_id,批号,Supplier_id,SUM(数量) AS 期初数量,SUM(含税金额) AS 期初含税金额 FROM dbo.Inigoodsstocks GROUP BY P_id,S_id,批号,Supplier_id),--期初数据汇总
        sq AS ( --上期数据汇总
            SELECT P_id,S_id,批号,Supplier_id,SUM(数量) AS 上期数量,SUM(含税金额) AS 上期含税金额
            FROM 
            (SELECT P_id,S_id,批号,Supplier_id,SUM(数量) AS 数量,SUM(含税成本金额) AS 含税金额
            FROM dbo.BillsDetail --各单据明细表
            WHERE 单据类型 IN ('采购入库单','采购退货单','销售出库单','销售退货单','报损单','报溢单') AND 记账时间 < '2024-03-01 00:00:00' AND 记账时间 >= '2023-03-01 00:00:00' --注意:2024-03-01 00:00:00是开始时间,2023-03-01 00:00:00是期初时间,应根据你自己的期初时间自行调整
            GROUP BY P_id,S_id,批号,Supplier_id
            ) sqSum
            GROUP BY P_id,S_id,批号,Supplier_id
        ), 
        bq AS ( --本期数据汇总
            SELECT P_id,S_id,批号,Supplier_id,SUM(数量) AS 本期数量,SUM(含税金额) AS 本期含税金额 
            FROM 
            (SELECT P_id,S_id,批号,Supplier_id,SUM(数量) AS 数量,SUM(含税成本金额) AS 含税金额
            FROM dbo.BillsDetail --各单据明细表
            WHERE 单据类型 IN ('采购入库单','采购退货单','销售出库单','销售退货单','报损单','报溢单') AND 记账时间 BETWEEN '2024-03-01 00:00:00' AND '2024-12-31 23:59:59' --注意:2024-03-01 00:00:00是开始时间,2024-12-31 23:59:59是结束时间
            GROUP BY P_id,S_id,批号,Supplier_id
            ) bqSum
            GROUP BY P_id,S_id,批号,Supplier_id
        ),
        --分别对本期各单据逐一进行数量和金额汇总
 &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值