盘点表的自动生成!

wsri66 2007-10-06 08:34:39
一个表是投料的:
CGHB
识别码 投料数量 投料日期
7102011 6 2007-1-5
7101211 12 2007-8-10
7097101 5 2007-8-20
7097201 10 2007-9-10
7094201 100 2007-9-30

一个是交付表:
MGHB
识别码 交付数量 交付日期
7097101 4 2007-8-20
7097201 10 2007-9-10
7094201 95 2007-9-30

用SQL语句取得下列结果:
识别码 交付数量 交付日期
7102011 6 2007-1-5
7101211 12 2007-8-10
7097101 1 2007-8-20
7094201 5 2007-9-30
我用的是ACCESS数据库,有几个月的数据,请考虑速度问题!
先谢谢大家了!
...全文
193 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxmcxm 2007-10-07
  • 打赏
  • 举报
回复
对前期投入交付完的是否不显示,
另表信息不是很完整,如何确定期初.是否从年初开始统计,如果从年初开始,至年未数据量肯定很大,建作一与查询结果相同结构的表
,在添加投料或交付表记录时,同时更新此表,就不用统计了.
cxmcxm 2007-10-07
  • 打赏
  • 举报
回复
select ghb.识别码, ghb.投料数量-mghb.交付数量 as 交付数量,mghb.交付日期
from ghb,mghb where ghb.识别码=mghb.识别码 and ghb.投料数量-mghb.交付数量>0
union
select * from ghb where not exists(select * from mghb where 识别码=ghb.识别码)
wsri66 2007-10-07
  • 打赏
  • 举报
回复
经过一天的努力:
Strsql = "SELECT distinct A.识别码,A.物料描述,B.说明,B.组数,B.钢种,sum(A.交付数量),MAX(A.交付日期),sum(C.锻件交付),sum(D.废品数量),sum(E.数量),sum(F.数量) FROM " & _
"(((((CGHB A Left JOIN TDQX B ON A.识别码 = B.识别码) Left JOIN (SELECT 识别码,锻件交付 FROM TDGXJF WHERE 锻件交付日期 >=#" & RQ11 & "# AND 锻件交付日期< #" & RQ12 & "# ) C ON A.识别码 = C.识别码) Left JOIN CGFP D ON A.识别码 = D.识别码) " & _
"Left JOIN CGRC E ON A.识别码 = E.调入识别码) Left JOIN CGRC F ON A.识别码 = F.调出识别码) " & _
"WHERE A.交付日期 >=#" & RQ11 & "# AND A.交付日期< #" & RQ12 & "# " & _
" GROUP BY A.识别码,A.物料描述,B.说明,B.组数,B.钢种"
得到所有当月发生的数据,在楼上的提示下:
Strsql = "select distinct t.SBM,B.物料描述,B.说明,B.组数,B.钢种,sum(t.num) as 交付数量,max(t.dt) as 交付日期 FROM " & _
"(SELECT 识别码 AS SBM, 锻件交付 as num, 锻件交付日期 as dt FROM TDGXJF " & _
"Union all " & _
"SELECT 识别码 AS SBM, 交付数量*(-1) as num, 交付日期 as dt FROM CGHB " & _
"Union all " & _
"SELECT 调出识别码 AS SBM, 数量*(-1) as num, 输入日期 as dt FROM CGRC " & _
"Union all " & _
"SELECT 调入识别码 AS SBM, 数量 as num, 输入日期 as dt FROM CGRC " & _
"Union all " & _
"SELECT 识别码 AS SBM, 废品数量*(-1) as num, 报废日期 as dt FROM CGFP) as t " & _
"INNER JOIN TDQX B ON T.SBM = B.识别码 where T.dt< #" & Format(RQ11, "yyyy-MM-DD") & "# " & _
"group by t.SBM,B.物料描述,B.说明,B.组数,B.钢种 having Sum(num) <> 0"
得到所有前期在制的数量。由于所取时间段的不同,只能用两段语句,大家看看还有什么好办法吗!
wsri66 2007-10-06
  • 打赏
  • 举报
回复
一个表是投料的:
CGHB
识别码 投料数量 投料日期
7102011 6 2007-1-5
7101211 12 2007-8-10
7097101 5 2007-8-20
7101211 2 2007-9-10
7097201 10 2007-9-10
7094201 100 2007-9-30

一个是交付表:
MGHB
识别码 交付数量 交付日期
7101211 8 2007-8-10
7097101 4 2007-8-20
7097201 10 2007-9-10
7094201 95 2007-9-30

识别码 期初 投入 交付 实盘 交付日期
7102011 6 0 0 6 2007-1-5 前期投入一直没交付的
7101211 12 2 8 6 2007-8-10 前期投入本期也投入交付后还剩余的
7097101 1 0 0 1 2007-8-20 前期投入也交付了部分剩余的
7097201 0 10 10 0 2007-9-10 当期投入当期交付的
7094201 0 100 95 5 2007-9-30 当期投入当期没交付完的
不好意思!楼上的按我前期要求完全正确。我是菜鸟没表述清楚,就是我要生成9月份的盘点,所有在9月份投入和交付的规格都的显示出来,而9月以前投入并完全按投入数交付的就不显示了,但9月以前投入但没有完全交付的剩余数作为本月期初出现,有些复杂!还请楼上的帮忙啊!
OracleRoob 2007-10-06
  • 打赏
  • 举报
回复


--CSDN自动在<>中间加了空格,你需要手工把空格删掉。

--Access 使用的是jet-SQL,SQL Server用的是T-SQL。

--Access下的SQL语句:

select 识别码,sum(num) as 交付数量,max(dt) as 交付日期
from
(
SELECT 识别码, 投料数量 as num, 投料日期 as dt
FROM CGHB
union all
SELECT 识别码, 交付数量*(-1) as num, 交付日期 as dt
FROM MGHB
) as t
group by 识别码
having sum(num) <>0


OracleRoob 2007-10-06
  • 打赏
  • 举报
回复
--Access 使用的是jet-SQL,SQL Server用的是T-SQL。

--Access下的SQL语句:

select 识别码,sum(num) as 交付数量,max(dt) as 交付日期
from
(
SELECT 识别码, 投料数量 as num, 投料日期 as dt
FROM CGHB
union all
SELECT 识别码, 交付数量*(-1) as num, 交付日期 as dt
FROM MGHB
) as t
group by 识别码
having sum(num)<>0
liehu1 2007-10-06
  • 打赏
  • 举报
回复
declare @CGHB table (sbm varchar(10),tlsl int,tlrq datetime)
insert into @cghb select '7102011',6,'2007-1-5'
union all select '7101211',12,'2007-8-10'
union all select '7097101',5,'2007-8-20'
union all select '7097201',10,'2007-9-10'
union all select '7094201',100,'2007-9-30'

declare @MGHB table (sbm varchar(10),jfsl int,jfrq datetime)
insert into @mghb select '7097101',4,'2007-8-20'
union all select '7097201',10,'2007-9-10'
union all select '7094201',95,'2007-9-30'

select sbm,convert(varchar(10),rq,111),sum(sl) sl from (
select sbm,tlsl sl,tlrq rq from @cghb union all
select sbm,-jfsl sl,jfrq rq from @mghb)a group by sbm,rq

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧