2016-12-21 31 views
0

我試圖查詢過去36個月內已開立的貸款清單。我也試圖將過去12個月內已開立的貸款數作爲一個單獨的專欄進行查詢。在WHERE子句中選擇日期間隔

該查詢返回兩列的相同值,我如何從36個月和12個月的間隔中獲得計數而無需運行單獨的查詢?

SELECT 
`XDL-NAME`, 
COUNT(distinct`XLN-LOANDATE`) as '36 Month Count', 
COUNT(IF(`XLN-LOANDATE` >= DATE_SUB(NOW(),INTERVAL 12 MONTH), 1 , NULL)) AS '12 Month Count' 
from 
LOAN 
JOIN 
DEALER ON `XLN-DLNO` = `XDL-NUM` WHERE `XLN-LOANDATE` >= DATE_SUB(NOW(),INTERVAL 36 MONTH) 

GROUP BY `XDL-NAME` 
+0

請編輯您的問題,提供樣本數據和期望結果。例如,爲什麼你有一個「數(不同)」?如果你正在尋找貸款計數,你爲什麼要計算日期? –

回答

0

而不是count12 months,改變sum像下面

SELECT 
`XDL-NAME`, 
COUNT(distinct`XLN-LOANDATE`) as '36 Month Count', 
SUM(IF(`XLN-LOANDATE` >= DATE_SUB(NOW(),INTERVAL 12 MONTH), 1 , 0)) AS '12 Month Count' 
from 
LOAN 
JOIN 
DEALER ON `XLN-DLNO` = `XDL-NUM` WHERE `XLN-LOANDATE` >= DATE_SUB(NOW(),INTERVAL 36 MONTH) 

GROUP BY `XDL-NAME` 
0

試試這個:

SELECT 
    `XDL-NAME`, 
    count((SELECT `XLN-LOANDATE` WHERE `XLN-LOANDATE` >= DATE_SUB(NOW(),INTERVAL 36 MONTH))) AS '36 Month Count', 
    count((SELECT `XLN-LOANDATE` WHERE `XLN-LOANDATE` >= DATE_SUB(NOW(),INTERVAL 12 MONTH))) AS '12 Month Count', 
from 
    LOAN 
     JOIN 
      DEALER ON `XLN-DLNO` = `XDL-NUM` 
GROUP BY `XDL-NAME` 

我所做的是使用子查詢來算,你想在每一間隔。這樣他們應該輸出姓名,36個月計數,12個月計數全部在一行(記錄)上。

0

我希望這個查詢返回的兩個獨立罪名:

SELECT `XDL-NAME`, 
     COUNT(*) as `36 Month Count`, 
     SUM(`XLN-LOANDATE` >= DATE_SUB(NOW(), INTERVAL 12 MONTH)) AS `12 Month Count` 
FROM loan l join 
    dealer d 
    ON `XLN-DLNO` = `XDL-NUM` 
WHERE `XLN-LOANDATE` >= DATE_SUB(NOW(), INTERVAL 36 MONTH) 
GROUP BY `XDL-NAME`; 
0

嘗試SUM,如:

SUM(IF('2016-12-21' >= NOW() -INTERVAL 12 MONTH, 1, 0)) AS '12 Month Count' 

樣品

mysql> SELECT IF('2016-12-21' >= NOW() -INTERVAL 12 MONTH, 1, 0); 
+----------------------------------------------------+ 
| IF('2016-12-21' >= NOW() -INTERVAL 12 MONTH, 1, 0) | 
+----------------------------------------------------+ 
|             1 | 
+----------------------------------------------------+ 
1 row in set (0,00 sec) 

mysql> SELECT IF('2015-12-22' >= NOW() -INTERVAL 12 MONTH, 1, 0); 
+----------------------------------------------------+ 
| IF('2015-12-22' >= NOW() -INTERVAL 12 MONTH, 1, 0) | 
+----------------------------------------------------+ 
|             1 | 
+----------------------------------------------------+ 
1 row in set (0,00 sec) 

mysql> SELECT IF('2015-12-21' >= NOW() -INTERVAL 12 MONTH, 1, 0); 
+----------------------------------------------------+ 
| IF('2015-12-21' >= NOW() -INTERVAL 12 MONTH, 1, 0) | 
+----------------------------------------------------+ 
|             0 | 
+----------------------------------------------------+ 
1 row in set (0,00 sec) 

mysql>