• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

请大家帮我看看这种复杂的情况怎么去写sql语句

pgz_007 2008-09-11 11:05:36
有下面三个表,每个表的第一项是主键。

用料用途项目表(project):
项目编号(xmbhid)、项目名称(xmmc)

出库表(outbill): (特例:当出库单是退料单的时候,领用项目这列就是退料单所对应的领料单号)
出库单号(outbhid)、领用项目(xmbhid)、出库单类别(Type:0代表领料、1代表退料、9代表作废的单)

出库明细表(outdetail):
出库单号(outbhid)、材料编号(clbhid)、出库数量(outnumber:正数代表领料、负数代表退料)

-----------------------------------------------
我知道outbill表有点冗余,但为了表尽可能少,没办法,何况数据量不是很大。一个项目可以有多个领料或者退料单,但一个出库单只能对应一个项目。一个领料单可以有多个退料单,但一个退料单只能对应一个领料单。

问题提出:
我想做某个项目总用料统计报表:
select clbhid,sum(outnumber) from outdetail left join outbill on outbill.outbhid=outdetail.outbhid where outbill.type<>'9' and outbill.xmbhid=:某项目编号(参数)

但这样不行,因为出库退料单的xmbhid对应的是某领料单号(outbhid,type=0)。如果没有这样对应的话上面这个查询是可行的。请问这个问题能用一个sql语句搞定吗?
...全文
91 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jiang5311 2008-09-27
如果很难写,就分步骤,一步骤实现一个功能,最后link起来就是结果了
回复
酋长 2008-09-27
建立存储过程,通过2步进行归集

1.归集该项目的领料单及数量

2.归集该项目的退料单及数量

3.通过你们自己的规则,得出总的需要统计数据
回复
ChinaJiaBing 2008-09-27

出库明细表:正的不是代表领货,负的代表退货吗。。。
为什么不行,总数不是一样的吗。。。
回复
ChinaJiaBing 2008-09-27

出库明细表:正的不是代表领货,负的代表退货吗。。。
为什么不行,总不是一样的吗的吗。。。
回复
cloudgamer 2008-09-27
没看懂哦
回复
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-09-11 11:05
社区公告
暂无公告