请教大神SQL语句怎么写

weixin_44737654 2022-08-10 15:47:38

(1.)其他入库单表头 T_STK_MISCELLANEOUS 含有入库日期字段 FDATE

(2.)其他入库单明细表 物料内码 FMATERIALID, 实收数量FQTY

(3.)其他出库单表头T_STK_MISDELIVERY 含有出库日期字段 FDATE

(4.)其他出库单明细表 T_STK_MISDELIVERYENTRY 物料内码 FMATERIALID, 实发数量FQTY

现要已年月和物料为key,统计出每个月物料实收数量减去实发数量的差额,同时列出 日期字段 FDATE ,物料内码 FMATERIALID,批号FLOT

 

...全文
144 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复

其它出库单明细表都没有名称列出来。这个很简单的,就是子母表。子母表可以能过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

  • 打赏
  • 举报
回复
@shinger126 谢谢,和你理解的差不多啊。
  • 举报
回复

这是初学者的题,4张表,进(头和体),出(头和体)
就不会关联查询了?

  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2022-08-10 15:47
社区公告
暂无公告