2014-02-10 85 views
0

我有一個查詢對像過去12個月來計算總和相同的查詢:使用不同的參數

select part_no, 
     count(part_no) r12 
    from t1 
where (t1.created<=sysdate and t1.created>=add_months(sysdate,-12) 

是否有可能創建一個查詢,還顯示在軋製6和喜歡同樣的查詢滾動3:

part_no r12 r6 r3 
----------------- 
100  8 2 1 
200  12 1 0 
300  10 4 4 

回答

0

如果你只是想知道COUNT的最後12,6和3的所有項目,你可以改變你的查詢如下。

SELECT part_no 
     ,COUNT(CASE WHEN t1.created <= sysdate 
         AND t1.created >= add_months(sysdate, -12) THEN 1 
        ELSE NULL 
       END) r12 
     ,COUNT(CASE WHEN t1.created <= sysdate 
         AND t1.created >= add_months(sysdate, -6) THEN 1 
        ELSE NULL 
       END) r6 
     ,COUNT(CASE WHEN t1.created <= sysdate 
         AND t1.created >= add_months(sysdate, -3) THEN 1 
        ELSE NULL 
       END) r3 
    FROM t1 
    GROUP BY part_no 
+0

謝謝,這似乎是最可行的辦法。 – Hanseman

0

你也許可以嘗試這樣的事情:

SELECT part_no, 
     SUM(IF(t1.created>=add_months(sysdate,-12), 1, 0)) r12, 
     SUM(IF(t1.created>=add_months(sysdate,-6), 1, 0)) r6, 
     SUM(IF(t1.created>=add_months(sysdate,-3), 1, 0)) r3 
FROM t1 
WHERE t1.created<=sysdate 
GROUP BY part_no 
+0

對不起,我的英語,但我試圖解釋:這是可能的,當一個行會落入這三個列 – indapublic

+0

是其可能 – nes

0

你可以計算的時間差(以月s)在子查詢中並由它組合。但不要忘記查詢性能。