You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求2021年10月各型号销售、期初期末库存的SQL查询写法

适配需求的SQL查询
%%time
SELECT vt_sales_cube_sz.modc_barc2 model,
        SUM(vt_sales_cube_sz.qnt) sales,
        -- 统计当月第一天的期初库存
        SUM(CASE WHEN vt_date_cube2.id_calendar_int = (SELECT MIN(id_calendar_int) FROM vt_date_cube2 WHERE wk_year_id = 2021 AND wk_MoY_id = 10) 
            THEN vt_stocks_cube_sz.qty ELSE 0 END) AS opening_stock,
        -- 统计当月最后一天的期末库存
        SUM(CASE WHEN vt_date_cube2.id_calendar_int = (SELECT MAX(id_calendar_int) FROM vt_date_cube2 WHERE wk_year_id = 2021 AND wk_MoY_id = 10) 
            THEN vt_stocks_cube_sz.qty ELSE 0 END) AS closing_stock
FROM vt_sales_cube_sz
LEFT JOIN vt_date_cube2 
    ON vt_sales_cube_sz.id_calendar_int = vt_date_cube2.id_calendar_int
LEFT JOIN vt_stocks_cube_sz ON 
    vt_stocks_cube_sz.parent_modc_barc = vt_sales_cube_sz.modc_barc AND
    vt_stocks_cube_sz.id_stock = vt_sales_cube_sz.id_stock AND 
    vt_stocks_cube_sz.id_calendar_int = vt_sales_cube_sz.id_calendar_int AND
    vt_stocks_cube_sz.vipusk_type = vt_sales_cube_sz.price_type
WHERE vt_date_cube2.wk_year_id = 2021 
        AND vt_date_cube2.wk_MoY_id = 10 
        AND vt_sales_cube_sz.id_stock IN 
            (SELECT id_stock 
            FROM vt_warehouse_cube 
            WHERE channel = 'OffLine') 
GROUP BY vt_sales_cube_sz.modc_barc2

改动说明

  • 新增两个条件聚合字段分别统计期初、期末库存:先通过子查询获取2021年10月日历表中最小(对应当月第一天)和最大(对应当月最后一天)的id_calendar_int值,再用CASE WHEN匹配对应日期的库存记录求和,替代原有的全月库存求和逻辑
  • 完全保留原有销售求和逻辑、表关联规则、过滤条件,不会影响原有销售统计的准确性
  • 若需要期初/期末无库存时返回NULL而非0,删除CASE WHEN逻辑中的ELSE 0即可

内容的提问来源于stack exchange,提问作者user16795517

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:06:03