50分求解一个库存结算问题,解决就给分,分不够再加!

qoo1983 2005-09-21 08:24:22
Table结构:批号,料号,日期,单据号码(RT1,SR1,ST1,MB1),库别,数量,库存
现在有3种查询:
1.按照批号查询,就是批号是不变得。每个单据号码是代表不同的意思,有出货,有收货的,现在我要 计算的库存是在同一料号,同一批号,同一库别的情况下来计算他的库存量。
例如,两组数据对于上面的表结构
A555 91.10503.111 2005-9-10 RT3 S1 500 500
A555 91.10503.111 2005-9-10 ST3 S1 200 300
就相当于第一次入库500,第二次出货200,此时库存就为300
我现在就要在页面中显示一组这样的数据。
2.按照料号查询
3.按照日期查询
请大家都来发表,给点方法也行,郁闷好多天了阿。
有什么没说清楚地我一直在线,问我就可以了。谢谢大家帮我!
...全文
146 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qoo1983 2005-09-21
  • 打赏
  • 举报
回复
有人帮我写了个sql 语句解决了,大家一起看看吧,呵呵


SELECT
批号,
料号,
日期,
单据号码,
库别,
数量,
库存=ISNULL((SELECT SUM(CASE LEFT(单据号码,2)
WHEN 'RT' THEN 数量
WHEN 'ST' THEN -数量
WHEN 'SR' THEN 数量
WHEN 'MB' THEN -数量
END) FROM table_name
WHERE 批号=a.批号
AND 料号=a.料号
AND 库别=a.库别
AND 日期<=a.日期),0)
FROM table_name a
ORDER BY 日期 ASC
qoo1983 2005-09-21
  • 打赏
  • 举报
回复
我试试看阿 ,真搞不懂,老板为什么要每笔数据都来算阿,郁闷
wanghui0380 2005-09-21
  • 打赏
  • 举报
回复
糟,还是写错了

你的期初余额应该为零,得统计每批地进项,销项

总成品进项
SELECT sum(数量) FROM 表
WHERE (CAST(SUBSTRING(批号, 2, LEN(批号)) AS int) <= 555) and 单据号码='SR'

总成品销项
SELECT sum(数量) FROM 表
WHERE (CAST(SUBSTRING(批号, 2, LEN(批号)) AS int) <= 555) and 单据号码='ST'

总成品库存=0+总成品进项-总成品销项 //假设系统启用时,库存为零

wanghui0380 2005-09-21
  • 打赏
  • 举报
回复
如果批号是按大小生成的,可以这样
比如:批号A555
按公式:期末余额=期初余额+进项-销项

期初余额:

SELECT top 1 CAST(SUBSTRING(批号, 2, LEN(批号)) AS int) AS bbb, 库存
FROM 表
WHERE (CAST(SUBSTRING(批号, 2, LEN(批号)) AS int) < 555)
ORDER BY bbb DESC

剩下同批的进项,销项我想你自己会写了吧
itzhiren 2005-09-21
  • 打赏
  • 举报
回复
select sum(数量) from table where 批号=变量批号 group by 料号,库别
qoo1983 2005-09-21
  • 打赏
  • 举报
回复
有人给点思路吗?谢谢
qoo1983 2005-09-21
  • 打赏
  • 举报
回复
第一个是批号查询的,就是批号是一样的。
都怪我没什么经验,这个系统都是我一个人写的。
你只要帮我把批号的库存算出来就可以了,其他的我不想去实现了
wanghui0380 2005-09-21
  • 打赏
  • 举报
回复
批号有规则吗?
比如:现在是A555,下一批就是A556

另:你们的表没有自动编号,也就主键拉.没主键排序太混乱了.按sql的字符排序规则A20排在A3前面
qoo1983 2005-09-21
  • 打赏
  • 举报
回复
RT表示原料入库,MB表示原料出库加工,SR表示成品入库,ST表示成品出库。
要是找最后一笔库存到反而容易算。
我们老大的意思是每一笔数据走下去就结算一次库存。
一直到最后一项,排列顺序是先按照料号,再按照单据号码排序的。
不晓得这样解释可以吗?
wanghui0380 2005-09-21
  • 打赏
  • 举报
回复
请详细解释一下单据号码(RT1,SR1,ST1,MB1)代表的意义
因为计算过程要参照单据号码的意义

另:这个表结构设计的不合规范,想来你没有学过会计学原理.
一:期末余额=期初余额+进项-销项 //按照你给的例子看不到这种关系的直接表达,可能要参照单据号码,才能推断进项和销项

二:时间问题,按照你现在的表结构,你的问题实际就是找到最后一笔结束时的库存,可最后一笔在那里??
我无法从时间上判断,也没有自动编号

三:按会计学原理:有借必有贷,借贷必相等.你应该在业务发生的相反方向同时记录一笔,哦,也许你的单据号码就是搞这个的,不知道我猜对没有
qoo1983 2005-09-21
  • 打赏
  • 举报
回复
具体来说呢,因为数据是动态的,好像不怎么好处理阿
先谢谢你!
GX198302 2005-09-21
  • 打赏
  • 举报
回复
case when

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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