求SQL语句

有两张表。一张产品表[字段有:id,产品名,库存数],一张产品进出流水表[字段有:id,产品ID,进/出,操作数量,操作日期]。现求每一种产品的上月结存、本月共进、本月共... 有两张表。一张产品表[字段有:id,产品名,库存数],一张产品进出流水表[字段有:id,产品ID,进/出,操作数量,操作日期]。

现求 每一种产品的上月结存、本月共进、本月共出、本月结存。求SQL语句。
展开
 我来答
longrenyingdc8ecb1
推荐于2016-05-01 · TA获得超过1万个赞
知道大有可为答主
回答量:6032
采纳率:82%
帮助的人:2345万
展开全部
  1. 你用的什么数据库,因为数据库不同可能函数有所不同。

  2. 上月结余,本月结余的公式是啥,他们和产品表的库存是什么关系。也就是业务逻辑。

  3. 库存数是随时变化的么?还是必须有的固定库存?还是每月变化一次?

  4. 日期是什么数据类型?是什么格式的,带不带时分秒?

    你如果把这些说清楚了,估计就有人回答了,你直接这么说大家时间不知道怎么写。

更多追问追答
追问
  1. MSSQL

  2. 没有公式。产品进出流水表的产品ID对应产品表的ID,也就是说有主外键关系。产品流水表中有进/出这个字段,进的话就在产品表中加上操作数量,出的话就减去。

  3. 库存肯定会变化呀,和流水表中的操作数量同时变化。

  4. 日期是Datetime,带不带时分秒没关系吧。

追答
这里假设你要求2014年2月的结余为上月结余。
这里我理解的上月结余,应该是上个月最终剩下的,而不是上个月的进-出,也不知道这么理解对不对。
我这里假设你是在3月查询的
select 产品ID,进/出,sum(操作数量) from where DATEDIFF(MONTH,操作日期,GETDATE())=0 group by 产品ID,进/出
还有一种查法就是convert(varchar(7),操作日期,120)='2014-03'
直接用year和month也可以,或者datepart
我假设进/出中0为进,1为出。
select b.id,b.,b.产品名 b.库存数-a.本月共进+a本月共出 上月结余,a.本月共进,a本月共出, b.库存数 本月结余 from (select 产品ID,sum(case when 进/出=0 then 操作数量 end) 本月共进,sum(case when 进/出=1 then 操作数量 end) 本月共出 from 进出流水表 where DATEDIFF(MONTH,操作日期,GETDATE())=0 group by 产品ID) a, 产品表 b where d.id=a.产品ID
子查询的地方可能有些地方要有点改动,你先看看子查询的结果是什么,如果是
1 1000 2000
那么就没问题
如果是
1 1000
1 2000
那么就还要记性改动。可能要加一个else 0什么的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式