请大家帮我看看这种复杂的情况怎么去写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语句搞定吗?
...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiang5311 2008-09-27
  • 打赏
  • 举报
回复
如果很难写,就分步骤,一步骤实现一个功能,最后link起来就是结果了
酋长 2008-09-27
  • 打赏
  • 举报
回复
建立存储过程,通过2步进行归集

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

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

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

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

出库明细表:正的不是代表领货,负的代表退货吗。。。
为什么不行,总不是一样的吗的吗。。。
cloudgamer 2008-09-27
  • 打赏
  • 举报
回复
没看懂哦

34,594

社区成员

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

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