-2
这我的查询,如何在此查询中简化?
SELECT item_id,prod_name,closein,closeout,closein-closeout as closing_stock,stockin,closein-closeout+ stockin as current_balnce,stockout,
closein-closeout+ stockin-stockout as balance,QtyIn,QtyOut
FROM (
SELECT b.prod_name,a.item_id,
(select COALESCE ((select sum(qty) from stock_leger_head k
join mas_prodt_name_hd b ON k.item_id = b.id
where k.dept_id=21 and k.flag= 'I' and cast(k.date as date)::date between '2017-03-01' and '2017-04-06' and k.item_id=a.item_id),0)as QtyIn),
(select COALESCE ((select sum(qty) from stock_leger_head k
join mas_prodt_name_hd b ON k.item_id = b.id
where k.dept_id=21 and k.flag= 'O' and cast(k.date as date)::date between '2017-03-01' and '2017-04-06' and k.item_id=a.item_id),0)as QtyOut),
(select COALESCE ((select sum(qty) from stock_leger_head k
join mas_prodt_name_hd b ON k.item_id = b.id
where k.dept_id=21 and k.flag= 'I' and cast(k.date as date)::date <='2017-02-28' and k.item_id=a.item_id),0)as closein),
(select COALESCE ((select sum(qty) from stock_leger_head k
join mas_prodt_name_hd b ON k.item_id = b.id
where k.dept_id=21 and k.flag= 'O' and cast(k.date as date)::date <='2017-02-28' and k.item_id=a.item_id),0)as closeout),
(select COALESCE ((select sum(qty) from stock_leger_head k
join mas_prodt_name_hd b ON k.item_id = b.id
where k.dept_id=21 and k.flag= 'I' and cast(k.date as date)::date between '2017-03-01' and '2017-04-06' and k.item_id=a.item_id),0)as stockin),
(select COALESCE ((select sum(qty) from stock_leger_head k
join mas_prodt_name_hd b ON k.item_id = b.id
where k.dept_id=21 and k.flag= 'O' and cast(k.date as date)::date between '2017-03-01' and '2017-04-06' and k.item_id=a.item_id),0)as stockout)
FROM stock_leger_head a INNER JOIN
mas_prodt_name_hd b ON a.item_id = b.id
where a.dept_id=21
GROUP BY a.item_id,b.prod_name order by item_id asc
感谢
用什么数据库? MySQL *或* Postgres? – tadman
我正在使用posygres。 –
这里的标签非常重要,这就是人们如何找到你的问题。标记为MySQL是误导性的。小心并仔细检查,这有助于保持组织结构。 – tadman