药库的入库单表和出库单表之间通过什么主键连接算出库存量~本来用的是药品批号,现在才知道药品批号不可行~ 那么应该怎么把入库单表和出库单表联系起来哪?
解决方案 »
- 求一条sql语句
- 求一更新语句
- 分隔字段查询是否包含某值问题
- 简单的SQL备份问题
- shrinkdatabase收缩数据库报执行超时,在线等
- sql操作
- 存储过程不能声名临时变量,只能声名参数吗?
- 弱智问题,我们在万网申请了ms_sqlserver挂接服务,我怎么把本地数据传上去?(在线求救)
- 急!求一sql语句!!!!!!!!!!!!!
- 请问:分辨大小写字母的等于语法是什么
- 请问:一个sql语句,不知是否可以实现?
- Microsoft SQL Server 2005 安装错误,紧急求助,谢谢啊~~~~~错误为: [Microsoft][SQL Native Client]共享内存提供程序: 超时错误 [258]
SELECT ISNULL(a.sl, 0) - ISNULL(b.sl, 0) AS kcl
FROM yk_rkyp a LEFT OUTER JOIN
yk_ckyp b ON a.ypid = b.ypid
NA A00018 太太口服液 10支/盒 10 盒 B01在状态NA(未批准)与OP(批准),根据 料品编号和仓区 更新库存表...
(select 药品编号 , sum(数量) as 数量 from 入库单表 group by 药品编号) m,
(select 药品编号 , sum(数量) as 数量 from 出库单表 group by 药品编号) n
where m.药品编号 = n.药品编号
最好是先将出库表量按照1:n关系的键(一般是药品入库id)做分组,分组后用入库表和出库分组汇总结果集做左外连接,然后再做算术运算求得库存值
"rkid","djh","ypbh","mc","sl","dw","jj","lsj","ph","scrq","yxq","lx","gg"
7,"200612301006 ",1,"眼药水",2,"瓶",1,2,"1212",,2006-12-13 00:00:00,"滴剂","瓶"
8,"200612301007 ",2,"老鼠药",1,"盒",10,12,"2222",,2006-12-30 00:00:00,"安眠药","瓶"
出库表是
"rpid","djh","ypbh","mc","sl","dw","jj","lsj","ph","scrq","yxq","lx","gg"
11,"200612312002 ",2,"老鼠药",5,"盒",10,12,"234234",,2006-12-13 00:00:00,"安眠药","瓶"
我查询的语句是
SELECT ISNULL(a.sl, 0) - ISNULL(b.sl, 0) AS kcl
FROM yk_rkyp a LEFT OUTER JOIN
yk_ckyp b ON a.rpid = b.rpid
(select 药品编号 , sum(数量) as 数量 from 入库单表 group by 药品编号) m,
(select 药品编号 , sum(数量) as 数量 from 出库单表 group by 药品编号) n
where m.药品编号 = n.药品编号to dawugui(潇洒老乌龟) 你m,n对应的是出库表和入库表吗? 药品编号在表中非主键,连接两个表会不会有问题啊?m,n是表别名,我是分别在你的入库单表和出库单表中求SUM,然后对应取结余,至于你说的药品编号在表中非主键,这个没有关系的.我不是按主键在统计,而是按你药品的编号在分组统计.不过上面的语句改为左连接是最好的.如下:select m.药品编号 , m.数量 - isnull(n.数量,0) as 结余 from
(select 药品编号 , sum(数量) as 数量 from 入库单表 group by 药品编号) m
left join
(select 药品编号 , sum(数量) as 数量 from 出库单表 group by 药品编号) n
on m.药品编号 = n.药品编号
"rkid","djh","ypbh","mc","sl","dw","jj","lsj","ph","scrq","yxq","lx","gg"
7,"200612301006 ",1,"眼药水",2,"瓶",1,2,"1212",,2006-12-13 00:00:00,"滴剂","瓶"
8,"200612301007 ",2,"老鼠药",1,"盒",10,12,"2222",,2006-12-30 00:00:00,"安眠药","瓶"
出库表是
"rkid","djh","ypbh","mc","sl","dw","jj","lsj","ph","scrq","yxq","lx","gg"
8,"200612312002 ",2,"老鼠药",5,"盒",10,12,"234234",,2006-12-13 00:00:00,"安眠药","瓶"
我查询的语句是
SELECT ISNULL(a.sl, 0) - ISNULL(b.sl, 0) AS kcl
FROM yk_rkyp a LEFT OUTER JOIN
yk_ckyp b ON a.rpid = b.rpid主键是rkid,是入库是自动添加的
入库表是
"rkid","djh","ypbh","mc","sl","dw","jj","lsj","ph","scrq","yxq","lx","gg"
8,"200612301007 ",2,"老鼠药",1,"盒",10,12,"2222",,2006-12-30 00:00:00,"安眠药","瓶"
出库表是
"rkid","djh","ypbh","mc","sl","dw","jj","lsj","ph","scrq","yxq","lx","gg"
8,"200612312002 ",2,"老鼠药",5,"盒",5,12,"234234",,2006-12-13 00:00:00,"安眠药","瓶"
8,"200612312002 ",2,"老鼠药",5,"盒",5,12,"234234",,2006-12-13 00:00:00,"安眠药","瓶"
的时候,也就是同一个rkid10盒药,分2次出库的时候
select rkid,ISNULL(m.sl, 0) - ISNULL(n.sl, 0)
from yk_rkyp m left outer join
(select rkid, sum(ISNULL(sl, 0)) as sl from yk_ckyp ) n
on m.rkid = n.rkid
然后用临时表或在程序/过程/函数中对结果集做求和操作获得库存量,sql中不允许group by嵌套,没办法
(select 药品批号 , 药品编号 , sum(数量) as 数量 from 入库单表 group by 药品批号,药品编号) m
left join
(select 药品批号 , 药品编号 , sum(数量) as 数量 from 出库单表 group by 药品批号,药品编号) n
on m.药品批号 = n.药品批号 and m.药品编号 = n.药品编号