34,587
社区成员
(1.)其他入库单表头 T_STK_MISCELLANEOUS 含有入库日期字段 FDATE
(2.)其他入库单明细表 物料内码 FMATERIALID, 实收数量FQTY
(3.)其他出库单表头T_STK_MISDELIVERY 含有出库日期字段 FDATE
(4.)其他出库单明细表 T_STK_MISDELIVERYENTRY 物料内码 FMATERIALID, 实发数量FQTY
现要已年月和物料为key,统计出每个月物料实收数量减去实发数量的差额,同时列出 日期字段 FDATE ,物料内码 FMATERIALID,批号FLOT
一看是金蝶的数据库表,分为表头和明细,日期在表头上,通过连接方式将多个表的数据统计出来,再根据时间去计算
其它出库单明细表都没有名称列出来。这个很简单的,就是子母表。子母表可以能过Left Join方式合并成一个入库表,同样,其它出库表也生成一个出库表。而出库表与入库表中间关联就是物料ID。关联后就变成一个大表。那样要取出入数据不就是很简单的事。
表连接(看你这应该是fulljoin)之后按照年月聚合(从date取年月你可以datepart分别取年和月也可以转字符串取左7位)
你这描叙的业务有问题吧。统计是以月为维度的,输出要求输出每天的日期,还有个批号,批号是每个单据每行物料一个批号吧,或者说是我理解错了?
如果你说的以年月来统计是指查询条件的话,大概就是这个样子的
declare @YM VARCHAR(7)='2022-07'
;with t as (select a.FDATE,b.FMATERIALID,b.FLOT,b.FQTY AS QTY
FROM T_STK_MISCELLANEOUS a join T_STK_MISCELLANEOUSENTRY b on a.单号=b.单号
where a.FDATE BETWEEN @YM+'-01' AND DATEADD(MS,-3,DATEADD(MONTH,1,@YM+'-01'))
union all
select a.FDATE,b.FMATERIALID,b.FLOT,-b.FQTY AS QTY
FROM T_STK_MISDELIVERY a join T_STK_MISDELIVERYENTRY b on a.单号=b.单号
where a.FDATE BETWEEN @YM+'-01' AND DATEADD(MS,-3,DATEADD(MONTH,1,@YM+'-01')))
SELECT FDATE,FMATERIALID,FLOT,SUM(QTY) FROM T GROUP BY FDATE,FMATERIALID,FLOT
这是初学者的题,4张表,进(头和体),出(头和体)
就不会关联查询了?