Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

agrupar columnas

Estas en el tema de agrupar columnas en el foro de SQL Server en Foros del Web. Hola a todos les explico mi problema Lo que deseo hacer es q es basicamente deseo por ejemplo ver los datos todos los datos de ...
  #1 (permalink)  
Antiguo 16/10/2012, 14:30
 
Fecha de Ingreso: junio-2010
Mensajes: 168
Antigüedad: 13 años, 10 meses
Puntos: 3
agrupar columnas

Hola a todos les explico mi problema

Lo que deseo hacer es q es basicamente deseo por ejemplo ver los datos todos los datos de unas personas que practiquen cierto deporte

para ello tengo
select id, nombre,apellidos,etc from user innerjoin.deporte.ced on user.ced where deporte='futbol'

esta consulta me funciona bien ya que la respuesta aparece por ejemplo

id nombre apellido deporte
1 abc tcb si
2 dbc pcs no


ahora deseo agreagar tambie los que jueguen por decir baloncesto, si lo hago aparece

select id, nombre,apellidos,etc from user innerjoin.deporte.ced on user.ced where deporte='futbol' or deporte='baloncesto'

id nombre apellido deporte
1 abc tcb si
2 dbc pcs no
1 abc tcb si
2 efbc pcs no
1 cbc tcb si
2 dbc bcs no

Como ven como es logico agruapa la respuesta al final, lo q necesito es que genere una nueva columna segun la nueva clausula, algo asi:


id nombre apellido deporte1 deporte2
1 abc tcb si si
2 dbc pcs no no
3 efbc pcs no si
4 cbc tcb si

y si una persona vio futbol y baloncesto no aparecesca en dos celdas, espero haberme hecho entender, y q alguien me pueda ayudar. Gracias!
  #2 (permalink)  
Antiguo 16/10/2012, 15:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: agrupar columnas

busca informacion sobre tablas pivote o pivot tables :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 16/10/2012, 23:55
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: agrupar columnas

Hay que agrupar la tabla Deportes utilizando una de las tecnicas de Pivot que Libras mencionó, por ejemplo así:
Código SQL:
Ver original
  1. SELECT ced,
  2.         IsNull(MAX(CASE WHEN deporte='futbol' THEN 'si' END),'no') [futbol],
  3.         IsNull(MAX(CASE WHEN deporte='baloncesto' THEN 'si' END),'no') [baloncesto]
  4. FROM Deportes
  5. GROUP BY ced
En cambio puedes utilizar tambien la instrucción Pivot.
Después hay que coincidirla como subconsulta (dentro de los paréntesis) con la tabla users:
Código SQL:
Ver original
  1. SELECT *
  2. FROM Users U
  3. LEFT JOIN (...) D
  4.     ON U.ced=D.ced;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #4 (permalink)  
Antiguo 17/10/2012, 13:58
 
Fecha de Ingreso: junio-2010
Mensajes: 168
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: agrupar columnas

Hola a todos muchas gracias por la ayuda asi es como plantee la consulta:

select idnumber,firstname,lastname,email,department,city, di082_grade_grades.itemid,
case itemid
WHEN 28205 then di082_grade_grades.finalgrade
end as nota1,
case itemid
WHEN 28160 then di082_grade_grades.finalgrade
end as nota2
From di082_user inner join di082_grade_grades on di082_user.id = di082_grade_grades.userid
where itemid=28205 or itemid=28160 and di082_grade_grades.finalgrade is not null


Pero me esta repitienedo los registros asi:

nombre apellido nota1 nota2
---------- ----------- -------- --------
nombre, tamayo null, 4.5
nombre, tamayo 2.3 null

necesito que quede asi

nombre apellido nota1 nota2
---------- ----------- -------- --------
nombre, tamayo 2.3, 4.5

que me falta para terminar=?? espero me puedan ayudar gracias!
  #5 (permalink)  
Antiguo 17/10/2012, 14:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: agrupar columnas

again, try you query using a pivot function and let us know your comments :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 17/10/2012, 15:13
 
Fecha de Ingreso: junio-2010
Mensajes: 168
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: agrupar columnas

HI, on my postgrest version has not enable crosstab funcion, for that reason i tried to did it like GeriReshef said

im using postgres 8.4

is it possible to do it on the way he suggest.?

thanks for the help!
  #7 (permalink)  
Antiguo 17/10/2012, 15:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: agrupar columnas

This is a sql server forum, and all information in this is for sql server, I don't know what you expected if you have a posgress database, the sintaxis is diferent between database engines and some ones don't support the same functions, please redirect your question to the respective forum.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 17/10/2012, 15:50
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: agrupar columnas

I don't believe it !!!
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 17/10/2012, 21:51
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
De acuerdo :risa:












__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog

Etiquetas: agrupar, columna, columnas, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:55.