2016-09-04 3 views
0

Ich habe die folgende Tabelle.Gruppe nach Jahr und Monat, aber nur den Monat und das Jahr tatsächlichen Mysql

select * from `consumo`; 

Ausgänge:

+----+------------+-----------------+---------------------+ 
| 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 | 
+----+------------+-----------------+---------------------+ 

ich zu einer Gruppe nach Jahr und Monat möchte aber nur das Ergebnis des Monats und des Jahres präsentieren tatsächlichen alle in Mysql ist.

ich dies tat:

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())) ; 

ich diesen Fehler:

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

Was war Ihr Ergebnis? Bitte posten Sie alle Fehler und den vollständigen MySQL- oder PHP-Code. –

+0

Im Interesse der Gesundheit verwenden Sie bitte nicht '-' innerhalb der Tabellen-/Spaltenbezeichner. – Strawberry

Antwort

0

Sie haben mehrere fehlende Klammern in den Unterabfragen, die in der having Klausel erscheinen.

Aber man könnte diese pragmatischer Ansatz, und kehren nur die aktuellsten Daten, die Sie erhalten, mit der Verwendung von order by und limit:

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 

Oder, wenn es wirklich mit dem laufenden Jahr muss übereinstimmen und Monat:

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

Ich habe diesen Fehler bekommen, mysql> SELECT JAHR ('fecha-hora'), MONAT (' fecha-hora'), SUM ('registroConsumo') FR OM' consumo' GROUP BY YEAR ('fecha-hora'), MONAT ('fecha-hora') HABEN JAHR (' fecha -hora') = JAHR (JETZT()) und MONAT ('fecha-hora') = MONAT (JETZT()); FEHLER 1054 (42S22): Unbekannte Spalte 'Fecha-Hora' in 'Having-Klausel' –

+0

Entschuldigung, das korrigiere ich. Es sollte ein 'Wo' sein, kein' Haben'. Siehe Aktualisierung. – trincot