2016-09-15 68 views
2

我的表如下SQL:如何存储子查询的多个值进行计算在主查询

item | date  | q_in | q_out | 
---------------------------------- 
a | 25-08-2016 | 100 | 50 
b | 26-09-2016 | 100 | 0 
----- upto 
b | 10-09-2016 | 0 | 100 

我需要一个像这样的输出: -

item | open_stock | inward | outward | balance| 
-----|------------|--------|---------|--------| 
a | 1500 | 10000 | 500 | 1100 | 
b |  500 | 5000 | 1000 | 4500 | 

其中

  • open_stock = q_in - q_out的余额直至31-08-2016
  • 转入=总计q_in from 2016年1月9日向2016年10月9日
  • 从2016年1月9日至2016年10月9日
  • 余额= open_stock +向内向外=总Q_OUT - 向外

和我的查询是如下这需要你的帮助

select 
    item, 
    (select 
     (SUM(q_in) - SUM(q_out)) 
    from 
     sale_table 
    where 
     date >= '2016-08-25' and date <= '2016-08-31') as open_stock, 
    SUM(q_in) as inward, 
    SUM(q_out) as outward , 
    (***open_stock + inward - outward***) as balance 
from 
    sale_table 
where 
    date >= '2016-09-01' and date <= '2016-09-10' 
group by 
    item 
+0

你期望的输出不显示任何数据,从而很难搞清楚w ^你正试图做的帽子。 –

+0

哪个RDBMS适合这个?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 –

+0

为mysql添加了一个解决方案。 – Samar

回答

0

对于MySQL:

select 
    item, 
    (@open_stock := select 
     (SUM(q_in) - SUM(q_out)) 
    from 
     sale_table 
    where 
     date >= '2016-08-25' and date <= '2016-08-31') as open_stock, 
    SUM(q_in) as inward, 
    SUM(q_out) as outward , 
    (@open_stock + SUM(q_in) - SUM(q_out)) as balance 
from 
    sale_table 
where 
    date >= '2016-09-01' and date <= '2016-09-10' 
group by 
    item 
+0

亲爱的@samar,感谢您的支持,但是这个查询不起作用..... – speedyraz

+0

您是否尝试过使用最新的mysql?我刚刚编辑它。你遇到了什么错误? – Samar

+0

我正在使用sql服务器,它会给出语法错误,正如你所知道的那样.... – speedyraz