Question:
Date: 11-11-2022 10:48:47
(In Spanish)
Gracias
Votes: 0 - Answers: 2 - Views: 7 Share on: Google Facebook Twitter LinkedIn Link
Como obtener los 12 meses del año[Unresolved]
Hola, tengo la siguiente situación: tengo consulta que necesito que me recorra desde enero hasta diciembre para pasar el valor del periodo a una subconsulta. En este momento como la tengo solo me está trabajando con los meses que están guardados en base de datos. Lo que necesito es que me traiga todos los meses que no están en la base de datos. A continuación les dejo la consulta para ver si me pueden ayudarGracias
SELECT e.nom_cort, bi.nombre_corto, bi.cuenta_banco, SUBSTRING(eb.fecha,1,4) AS año, eb.periodo, (SELECT COUNT(eb2.id) FROM ecuenta_banco eb2 WHERE eb2.año = eb.año AND eb2.periodo = eb.periodo AND eb2.id_banco = eb.id_banco) as esatdo FROM tabla1 eb INNER JOIN tabla2 bi ON bi.id = eb.id_banco INNER JOIN tabla3 e ON e.id = bi.id_empresa
Votes: 0 - Answers: 2 - Views: 7 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 18-11-2022 04:45:31 Para implementar lo que deseas debes colocar tu consulta dentro de un LOOP. Sería algo similar a esto:
LOOP -- tu consulta va aquí, debes usar la variable 'mes' (numero 1 - 12) para iterar IF mes = 12 THEN LEAVE; END IF; END LOOP;
Si estás ejecutando la consulta dentro de un script, entonces no necesitas el LOOP, puedes simplemente usar un lazo for() Votes: 0 - Link answer -
Date: 24-05-2023 19:50:26 SELECT
e.nom_cort,
bi.nombre_corto,
bi.cuenta_banco,
SUBSTRING(eb.fecha, 1, 4) AS año,
m.mes AS periodo,
(
SELECT COUNT(eb2.id)
FROM ecuenta_banco eb2
WHERE eb2.año = eb.año
AND eb2.periodo = m.mes
AND eb2.id_banco = eb.id_banco
) AS estado
FROM tabla1 eb
INNER JOIN tabla2 bi ON bi.id = eb.id_banco
INNER JOIN tabla3 e ON e.id = bi.id_empresa
RIGHT JOIN (
SELECT 1 AS mes 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
) AS m ON m.mes = MONTH(eb.fecha) Votes: 0 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In