【SQL Server】统计指定年份的1-12月份每个月的数据

如图所示,现在有一个需求,主要是按当前年份查询仓库每一个月的库存流水和配件的库存占比情况

 其要求如下:

控件

类型

长度

备注

查询条件

 

 

 

服务站

 

 

服务站的查询条件

数据来源:可用的服务站档案

必选,可以多选

配件名称

 

 

配件名称的查询条件

数据来源:可用的产品物料数据

必选,可以多选

年度

Picklist

 

前五年后十年的范围,单选

显示信息

 

 

查询结果

标题

Expression

 

表达式,显示“【参数年度所选值】年度客户回款报表“

服务站

 

 

显示服务站名称,此列为行分组。

数据来源:出库单实体

发货仓库

 

 

数据来源:出库单实体

配件名称

 

 

显示配件名称值,此列为行分组。

字体显示蓝色,下划线效果

数据来源:出库单明细实体

数量

 

 

数据来源:出库单明细实体

月份

 

 

数据来源:出库单实体创建时间

显示结果

 

 

排序:一级行分组按服务站名称排序,二级按配件名称正序排序

显示列:服务站,发货仓库,配件名称,数量,每月总数。

显示规则:所有数字显示精确到两位小数。

 

总计

 

 

针对本报表的汇总统计:配件一年内申请数量总和。

SQL语句如下:

DECLARE @userid uniqueidentifier = '9FC299F4-6E20-EA11-A12B-000C29D7F690'SET context_info = @userid
SELECT DISTINCT so.new_station_idname, so.new_recstocksite_idname, sod.new_product_idname
	, convert(int, SUM(sod.new_applyqty)) AS qty
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 1 THEN sod.new_applyqty
		ELSE 0
	END)) AS '1month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 2 THEN sod.new_applyqty
		ELSE 0
	END)) AS '2month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 3 THEN sod.new_applyqty
		ELSE 0
	END)) AS '3month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 4 THEN sod.new_applyqty
		ELSE 0
	END)) AS '4month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 5 THEN sod.new_applyqty
		ELSE 0
	END)) AS '5month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 6 THEN sod.new_applyqty
		ELSE 0
	END)) AS '6month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 7 THEN sod.new_applyqty
		ELSE 0
	END)) AS '7month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 8 THEN sod.new_applyqty
		ELSE 0
	END)) AS '8month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 9 THEN sod.new_applyqty
		ELSE 0
	END)) AS '9month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 10 THEN sod.new_applyqty
		ELSE 0
	END)) AS '10month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 11 THEN sod.new_applyqty
		ELSE 0
	END)) AS '11month'
	, convert(int, SUM(CASE 
		WHEN datepart(month, so.createdon) = 12 THEN sod.new_applyqty
		ELSE 0
	END)) AS '12month'
FROM Filterednew_zh_stockoutorder so, Filterednew_zh_stockoutorderdetail sod, Filterednew_srv_siteinv s
WHERE so.new_station_idname IN (@station)
	AND sod.new_product_idname IN (@productname)
	AND datepart(year, so.createdon) = @year
	AND so.new_recstocksite_id = s.new_stocksite_id
	AND sod.new_product_id = s.new_product_id
	AND so.new_zh_stockoutorderid = sod.new_stockoutorder_id
GROUP BY so.new_station_idname, so.new_recstocksite_idname, sod.new_product_idname

查询结果如下:

 

 
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值