Reporte usando GoupBy

  • Autor Autor Jean2510
  • Fecha de inicio Fecha de inicio
J

Jean2510

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Buenas con todos, tenga un problema al hacer un reporte, me explico:

Tengo una tabla llamada Curricular, la cual tiene códigos de otras 4 tablas; les dejo el diagrama :

3.jpg



La cuestión es que al hacer la siguiente consulta T-SQL

Insertar CODE, HTML o PHP:
	SELECT  Codigo_Curricula,Codigo_Idioma, Codigo_Modalidad, Codigo_Nivel
	FROM Curricula
	group by  Codigo_Curricula, Codigo_Idioma, Codigo_Modalidad, Codigo_Nivel
	ORDER BY Codigo_Curricula

me muestra esto:

1.jpg


y lo que necesito me muestre es algo como esto:

2.jpg



Una forma seria quitan el "Codigo_Curricula" del group by pero me da error :

Mens. 8120, Nivel 16, Estado 1, Línea 1
La columna 'Curricula.Codigo_Curricula' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.

y ese código necesito este siempre, dado que con el consulto todos los ciclos asociados a esa curricula en el evento click en la aplicación.

Gracias por la ayuda.
 
[MENTION=20533]Jean2510[/MENTION] no se ven las img...
subilas a: Xooimage - Hébergement gratuit d'images

Buenas con todos, tenga un problema al hacer un reporte, me explico:

Tengo una tabla llamada Curricular, la cual tiene códigos de otras 4 tablas; les dejo el diagrama :

3-3fc425e.jpg



La cuestión es que al hacer la siguiente consulta T-SQL

Insertar CODE, HTML o PHP:
	SELECT  Codigo_Curricula,Codigo_Idioma, Codigo_Modalidad, Codigo_Nivel
	FROM Curricula
	group by  Codigo_Curricula, Codigo_Idioma, Codigo_Modalidad, Codigo_Nivel
	ORDER BY Codigo_Curricula

me muestra esto:

1-3fc424a.jpg


y lo que necesito me muestre es algo como esto:

2-3fc425a.jpg



Una forma seria quitan el "Codigo_Curricula" del group by pero me da error :

Mens. 8120, Nivel 16, Estado 1, Línea 1
La columna 'Curricula.Codigo_Curricula' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.

y ese código necesito este siempre, dado que con el consulto todos los ciclos asociados a esa curricula en el evento click en la aplicación.

Gracias por la ayuda.
 
solo tenias que editar el 1 post...

Insertar CODE, HTML o PHP:
	SELECT  Codigo_Curricula,Codigo_Idioma, Codigo_Modalidad, Codigo_Nivel
	FROM Curricula
	group by  Codigo_Curricula
	ORDER BY Codigo_Curricula
 
Da el mismo error :

Mens. 8120, Nivel 16, Estado 1, Línea 1
La columna 'Curricula.Codigo_Idioma' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.

Fíjate que los códigos de curricula son auto incrementables, la clausula GoupBy, agrupa siempre y cuando sean igual lo cual no pasa. En cambia en los otros campos si son iguales por lo que si agruparía.

PD: Creo el foro esta fallando no me quejaba editar, sorry
 
Da el mismo error :

Mens. 8120, Nivel 16, Estado 1, Línea 1
La columna 'Curricula.Codigo_Idioma' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.

Fíjate que los códigos de curricula son auto incrementables, la clausula GoupBy, agrupa siempre y cuando sean igual lo cual no pasa. En cambia en los otros campos si son iguales por lo que si agruparía.

PD: Creo el foro esta fallando no me quejaba editar, sorry

pues a mi me funciona ese codigo... (ejemplo)
Insertar CODE, HTML o PHP:
SELECT id,id_user,numero,pais FROM `ionumeros` GROUP BY id_user ORDER BY id_user
id es auto incrementado
id_user es un id de usuario que se repite varias veces
numero no se repite
pais se repite
 
Que gestor de BD es?
 
A ver, no tiene mucho sentido agrupar por el auto incremental ya que no se repetirá 🙂

Y si agrupas por los otros campos piensa que tendrás N ids en el select y de ahí el error.
 
Tu pregunta es confusa, que es lo que quieres obtener de las tablas.

Insertar CODE, HTML o PHP:
SELECT  Codigo_Curricula,Codigo_Idioma, Codigo_Modalidad, Codigo_Nivel
	FROM Curricula
	group by  Codigo_Nivel
Prueba asi y aclara que es lo que quieres obtener.
 
Hablando de TSQL (SQL SERVER)
Cualquier campo que pongas en el SELECT, si no se encuentra en el GROUP BY lo debes mostrar con una función de agregación.
En tu caso podes usar lo siguiente:
Insertar CODE, HTML o PHP:
SELECT 
    MAX(Codigo_Curricula),
    MAX(Codigo_Idioma), 
    MAX(Codigo_Modalidad), 
    Codigo_Nivel
FROM 
    Curricula
GROUP BY  
    Codigo_Nivel

Saludos
 
Gracias ya logre la consulta, quedo asi :

Insertar CODE, HTML o PHP:
SELECT  MIN(Codigo_Curricula) AS Curricula,Codigo_Idioma, Codigo_Modalidad, Codigo_Nivel 
FROM Curricula 
GROUP BY  Codigo_Idioma, Codigo_Modalidad, Codigo_Nivel 
ORDER BY Curricula

y muestra lo que quería :laugh:

5-3fc8cda.jpg


Gracias! 😛cguru:
 
Atrás
Arriba