我有一個數據庫,其中有一張表用於保存報告。每個報告都有一個日期(年 - 月 - 日),該日期在報告創建時設置。使用「where」在數據庫中獲取「計數」以設置日期限制
經過大量測試後,我得到了一些工作,但不是我想它的工作。
我想要得到從初始日期(年 - 月 - 日)到最後日期(年 - 月 - 日)每個月的報告數量。但我不太清楚如何完成它。
這是MySQL句話我現在使用:
SELECT meses.month id_mes, count(re_fecha) total
FROM
(
SELECT 1 AS MONTH
UNION SELECT 2 AS MONTH
UNION SELECT 3 AS MONTH
UNION SELECT 4 AS MONTH
UNION SELECT 5 AS MONTH
UNION SELECT 6 AS MONTH
UNION SELECT 7 AS MONTH
UNION SELECT 8 AS MONTH
UNION SELECT 9 AS MONTH
UNION SELECT 10 AS MONTH
UNION SELECT 11 AS MONTH
UNION SELECT 12 AS MONTH
) as meses
LEFT JOIN reportes ON month(re_fecha) = meses.MONTH
WHERE re_fecha BETWEEN '2017-01-01' AND '2017-08-31'
GROUP BY meses.MONTH, monthName(re_fecha)
這是下面的結果我與MySQL的句子越來越:
id_mes | total
---------------
04 | 15
05 | 5
06 | 15
07 | 2
我我不確定這是否有幫助,但如果我不使用「re_fechas ...」的結果,我會得到更接近我們所尋找的結果:
id_mes | total
-------------
01 | 0
02 | 0
03 | 0
04 | 15
05 | 5
06 | 15
07 | 2
08 | 6
09 | 0
10 | 0
11 | 0
12 | 0
最後,我想看看:
id_mes | total
-------------------
01-2017 | 0
02-2017 | 0
03-2017 | 0
04-2017 | 15
05-2017 | 5
06-2017 | 15
07-2017 | 2
08-2017 | 6
我有兩個問題,它是如何工作現在:
當我用一句「哪裏「沒有顯示在指定日期有0個報告的月份。如果我不使用「在哪裏」,我幾乎以我想要的方式得到東西,但不在我想要的日期範圍內。
我遇到的另一個問題是我想獲得當月的年份(如上面所需的代碼塊所示)。
我希望這是足夠的信息來了解一切,我不知道如果我能提供的數據庫,但如果你認爲會有所幫助,讓我知道。
@Strawberry即使這是費力的,它很簡單,如果OP不需要幾個月的可變範圍。雖然我們需要一個'FULL OUTER JOIN',但我們沒有在MySQL上使用它,所以我們需要用'LEFT JOIN'來模擬它。我更新了答案,增加了解決這個問題的另一種方法。 – MiguelKVidal
Gotcha - 我的錯誤。 – Strawberry
這個完美的作品!我們已經嘗試過並且已經實施了,並且正如我們所希望的那樣運行。我很感激答覆。感謝你們。 –