您可以使用modular arithmetic獲得後兩位數字(他們的當數除以100的餘數),那麼假設你想總結money
當你的數據是「按分組「一個月:
SELECT month_x % 100 AS Month, SUM(money) AS TOTAL
FROM testa
GROUP BY Month
ORDER BY Month ASC;
或者,你可以使用依賴於MySQL的implicit type conversion,並使用其字符串函數:
SELECT RIGHT(month_x, 2) AS Month, SUM(money) AS TOTAL
FROM testa
GROUP BY Month
ORDER BY Month ASC;
UPDATE
正如@ shiplu.mokadd.im狀態,每個月(甚至那些您有沒有數據),則需要從臨時表到12獲得數字1表示。但是,您可以使用UNION
在查詢中創建一個這樣的臨時表:
SELECT 1
UNION SELECT 2
UNION SELECT 3 -- etc
因此:
SELECT Month, Sum(money) AS TOTAL
FROM testa
RIGHT JOIN (
SELECT 1 AS Month
UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6
UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11
UNION SELECT 12
) months ON testa.month_x % 100 = months.Month
GROUP BY Month;
無論其我想指出,通常一個通常不會在這樣做數據庫,因爲它確實屬於表示層:無論您正在訪問數據庫的任何語言,如果在r中沒有對應的記錄,您將循環使用1...12
並假定TOTAL
爲0
esultset。
這是不可能與單一表.. ..? –
不,這是不可能的。然而,你可以把整個事情放在一個程序中。但是每次爲這樣的查詢創建臨時表都會降低性能。這就是爲什麼擁有這種永久性桌子更好 –