2016-09-04 140 views
0

我有下表。Group by year and month but only present the month and year actual mysql

select * from `consumo`; 

輸出:

+----+------------+-----------------+---------------------+ 
| id | cedula  | registroConsumo | fecha-hora   | 
+----+------------+-----------------+---------------------+ 
| 1 | 0931111111 |    20 | 2016-08-17 13:52:48 | 
| 2 | 0931111111 |    25 | 2016-08-17 13:53:01 | 
| 3 | 0311111111 |    27 | 2016-08-17 13:54:23 | 
| 4 | 0311111111 |    10 | 2016-08-17 13:54:26 | 
| 5 | 0311111111 |    12 | 2016-08-17 13:54:29 | 
| 6 | 0311111111 |    14 | 2016-08-17 13:54:34 | 
| 7 | 0311111111 |    19 | 2016-08-17 13:54:38 | 
| 8 | 0311111111 |    190 | 2016-08-17 13:54:44 | 
| 9 | 0311111111 |    195 | 2016-08-17 13:54:48 | 
| 10 | 0912223333 |    19 | 2016-08-17 13:54:54 | 
| 11 | 0111111111 |    20 | 2016-08-17 13:54:59 | 
| 12 | 0111111111 |    23 | 2016-08-17 13:55:03 | 
| 13 | 0111111111 |    27 | 2016-08-17 13:55:07 | 
| 14 | 0111111111 |    35 | 2016-08-17 13:55:11 | 
| 15 | 0111111111 |    10 | 2016-08-17 13:55:14 | 
| 16 | 0111111111 |    35 | 2016-09-04 12:10:01 | 
| 17 | 0111111111 |    330 | 2016-09-04 12:10:06 | 
+----+------------+-----------------+---------------------+ 

我想組按年份和月份,但目前唯一的年月實際都是在MySQL的結果。

我這樣做:

select SUM(`registroConsumo`) from `consumo` 
GROUP BY YEAR(`fecha-hora`),MONTH(`fecha-hora`) 
HAVING YEAR(`fecha-hora`) = SELECT EXTRACT (YEAR FROM (SELECT NOW())) 
AND MONTH(`fecha-hora`) = SELECT EXTRACT (MONTH FROM (SELECT NOW())) ; 

我得到這個錯誤:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near SELECT EXTRACT (YEAR FROM (SELECT NOW())) AND MONTH(`fecha-hora`) = SELECT EXTRA at line 1

+0

你的結果是什麼?請發佈任何錯誤,以及完整的MySQL或PHP代碼。 –

+0

爲了保持健康,請不要在表格/列標識符中使用' - '。 – Strawberry

回答

0

你必須在出現的having子句中的子查詢缺少多個括號。

但是你可以更務實地處理這,只是返回你得到的最新數據,使用的order bylimit

select YEAR(`fecha-hora`), 
     MONTH(`fecha-hora`) 
     SUM(`registroConsumo`) 
from  `consumo` 
group by YEAR(`fecha-hora`), 
     MONTH(`fecha-hora`) 
order by YEAR(`fecha-hora`) DESC, 
     MONTH(`fecha-hora`) DESC 
limit 1 

或者,如果真的有,以配合當前年份,月:

select YEAR(`fecha-hora`), 
     MONTH(`fecha-hora`) 
     SUM(`registroConsumo`) 
from  `consumo` 
where YEAR(`fecha-hora`) = YEAR(NOW()) 
and  MONTH(`fecha-hora`) = MONTH(NOW()) 
group by YEAR(`fecha-hora`), 
     MONTH(`fecha-hora`) 
+0

我得到了這個錯誤,mysql> SELECT YEAR('fecha-hora'),MONTH('fecha-hora'),SUM('registroConsumo')月('fecha-hora')=月(現在());月(現在());月(現在()); 錯誤1054(42S22):'having clause'中的未知列'fecha-hora' –

+0

對不起,我改正了這一點。它應該是一個「where」,而不是「having」。查看更新。 – trincot

相關問題