2017-11-16 11 views
0

各月の過去12ヶ月のレコードをリストし、その月の隣に0を表示するレコードが見つからなかった月を含めるとします。私は常にすべての12カ月間に少なくとも1つのレコードを持つ別のテーブルを含めてみましたが、そのケースから月が抽出されましたが、私はこれが間違っていることを知っています。私がしたすべての研究は、ケースエキスを使用していませんでした。もし私ができれば、私はそれを維持するつもりです。case extractを使用してゼロ行で月を返します。

現在のクエリが動作している:あなたはすでにクエリの月を特定すると罰金であれば、それはあるかもしれない

select count(RMA.id) "Number of RMAs", case extract(month from 
RMA.RMA_DATE)when 1 then 'January' 
when 2 then 'February' 
when 3 then 'March' 
when 4 then 'April' 
when 5 then 'May' 
when 6 then 'June' 
when 7 then 'July' 
when 8 then 'August' 
when 9 then 'September' 
when 10 then 'October' 
when 11 then 'November' 
when 12 then 'December' 
else 'error' 
end, extract(year from RMA.rma_date) 
from RMA, 
    RMA_DETAIL 
where RMA.ID = RMA_DETAIL.RMA_ID And 
     RMA.rma_date >= sysdate - 365 And 
     RMA_DETAIL.ID <> 3 
group by extract(month from RMA.rma_date), extract(year from RMA.rma_date) 
order by extract(year from RMA.rma_date), extract(month from RMA.rma_date) 

結果

current query

+0

どのdbmsを使用していますか? – jarlh

+0

IQMS製造ERP –

+0

オラクル申し訳ありませんが、プロダクションプランナーが最初に、ソフトウェアCIは私の自宅で2番目の仕事です。 IQMSはerpソフトウェアです。オラクルは私が信じるバックボーンです。 –

答えて

0

SUMケース

これらを合計するだけの価値がある。 のカウントがの場合、テーブルの内容は数えられません。 の合計額がの場合は、月が表示されない場合は合計が0になります。

SELECT 
    SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '1' THEN 1 ELSE 0) AS January 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '2' THEN 1 ELSE 0) AS February 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '3' THEN 1 ELSE 0) AS March 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '4' THEN 1 ELSE 0) AS April 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '5' THEN 1 ELSE 0) AS May 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '6' THEN 1 ELSE 0) AS June 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '7' THEN 1 ELSE 0) AS July 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '8' THEN 1 ELSE 0) AS August 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '9' THEN 1 ELSE 0) AS September 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '10' THEN 1 ELSE 0) AS October 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '11' THEN 1 ELSE 0) AS November 
    ,SUM(CASE WHEN EXTRACT(month from RMA.RMA_DATE) = '12' THEN 1 ELSE 0) AS December 
... 
関連する問題