一个进仓表,一个出仓表,仓库物料存仓量统计问题

curd0468 2007-06-03 10:27:39
进仓表Instorage
type color number
a red 10
a green 15
a red 20
b blue 18
b green 8
出仓表OutStorage
type color number
a red 20
a green 15
b blue 10
c red 8

现在要求统计出相同品种相同颜色的库存量是多少.
要把Instorage中相同品种相同颜色的数量加起来再减去OutStorage中相同品种相同颜色的数量,如果Instorage中有的,OutStorage中没有的,显示的库存量为正数,如果OutStorage表中有,而Instroage中没有,则显示库存量为负数.
...全文
521 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
神奇的章鱼哥 2007-06-03
  • 打赏
  • 举报
回复
最后加个
having sum(number) <> 0
就好了

探讨:
先把两个表相同的量先加起来,然后再减去出库表——是你的笔误吗?
你说的是不是:先把进仓表相同的量先加起来,然后再减去出库表

如果这样的话,反而搞复杂了,因为有可能进仓里没有这种组合,但是出仓里有,而这时候他的库存是负的,如果按你说的做,那么这个库存不会出现,这是违背实际情况的
yumanqing 2007-06-03
  • 打赏
  • 举报
回复
UP
amandag 2007-06-03
  • 打赏
  • 举报
回复
select a.type,a.color ,sum(number) 'number'
from
(
select type,color,number from Instorage
union all
select type,color,-number 'number' from OutStorage
) a
group by type,color
having sum(number) <> 0
curd0468 2007-06-03
  • 打赏
  • 举报
回复
imwjb,您的思路和我想的有一点出入,我的想的是先把两个表相同的量先加起来,然后再减去出库表,你的方法是先把两个表合到一起来,把出库表的数量为负,然后再统计和.

感谢您,那麻烦您再给我加上一句,如果number是0的话就不显示
下面的问题是您附送给我的,既使不回答我也会结贴的
冬你个冬 2007-06-03
  • 打赏
  • 举报
回复
谁能帮我解释一下
我没怎么看懂啊
lnwuyaowei 2007-06-03
  • 打赏
  • 举报
回复
晕,再加一句:佩服楼上的楼上
lnwuyaowei 2007-06-03
  • 打赏
  • 举报
回复
佩服楼上。
amandag 2007-06-03
  • 打赏
  • 举报
回复
楼上的方法比我好..动作比我快..
神奇的章鱼哥 2007-06-03
  • 打赏
  • 举报
回复
select a.type,a.color ,sum(number) 'number'
from
(
select type,color,number from Instorage
union all
select type,color,-number 'number' from OutStorage
) a
group by type,color


type color number
---------- ---------- -----------
b blue 8
a green 0
b green 8
a red 10
c red -8

(所影响的行数为 5 行)


lnwuyaowei 2007-06-03
  • 打赏
  • 举报
回复
等看楼上的方法,呵呵。
神奇的章鱼哥 2007-06-03
  • 打赏
  • 举报
回复
问题太简单了吧?就怕拿不到分

留个位置,写SQL去
curd0468 2007-06-03
  • 打赏
  • 举报
回复
谢谢谢谢,接贴了,您不仅让我学到了新的SQL语句,也能让我学到新的思考问题的方法.

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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