SQL根据日期从总购买中扣除总销售额

时间:2014-10-19 10:46:37

标签: sql

我正在尝试按时间计算销售单位剩余的总购买单位。下面是我的示例表和下面的所需输出。

fno   pno   vdate              pdate    units   ttype
1234    1   1-Jan-2011     1-Jan-2011   100    p
12      1   1-Jan-2012     1-Jan-2011   100    p
1234    1   1-Jan-2012     1-Jan-2011   100    p
1234    1   1-Jan-2012     1-Jan-2011   100    p
12      1   1-Jan-2013     1-Jan-2011   100    s
1234    1   1-Jan-2013     1-Jan-2011   150    s

输出应为

fno  pno    vdate        pdate    units ttype
1234    1   1-Jan-2012  1-Jan-2011  50  p
1234    1   1-Jan-2012  1-Jan-2011  100 p

此处ttype是交易类型' s'意味着销售和' p'意味着购买。我想有SQL查询,它可以根据购买的订单计算单位。

如果看看2011年1月1日的1234 fno,购买了100个单位,第二次购买是在2012年1月1日,每个100单位。同样的交易发生在fno = 12,单位为100(购买),100个单位已于2013年1月1日售出。

这是SQL

select (t3.pUnits - t2.sUnits) as sb, t1.fno, t1.ttype, t1.vdate from 
dbtrans as t1
left join (
    select sum(units) as sUnits, fno, pno
    from dbtrans
    group by fno, pno, ttype having ttype = 's'
) as t2 on t1.fno = t2.fno

left join (
    select sum(units) as pUnits, fno, pno
    from dbtrans
    group by fno, pno, ttype having ttype = 'p'
) as t3 on t1.fno = t3.fno
group by t1.vdate 

因此,应根据事务类型以vdate为基础进行计算。

如果我遗失了什么,请告诉我。

提前致谢。

0 个答案:

没有答案