-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