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

Consulta sql server

Estas en el tema de Consulta sql server en el foro de SQL Server en Foros del Web. Tengo una base de datos en SQL SERVER: Tabla: TABLE1 id nombre valor 1, Juan, 12 2, Juan, 32 3, Juan, 51 4, Mario, 58 ...
  #1 (permalink)  
Antiguo 09/10/2012, 22:39
 
Fecha de Ingreso: octubre-2012
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Consulta sql server

Tengo una base de datos en SQL SERVER:

Tabla: TABLE1

id nombre valor

1, Juan, 12
2, Juan, 32
3, Juan, 51
4, Mario, 58
5, Mario, 19
6, Mario, 74
7, Melisa, 27
8, Melisa, 58
9, Melisa, 36
10, Carlos 27
11, Carlos 11

alguien podria ayudarme a hacer un query que me de:

nombre valor1 valor2 valor3

Juan 12, 32, 51
Mario 58, 19, 74
Melisa 27, 58, 36
Carlos 27, 11, -


Los nombres en esta tabla tendran 3 valores maximo,si no existe valor se pondra "-" como en el ejemplo

Gracias
  #2 (permalink)  
Antiguo 10/10/2012, 02:50
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Consulta sql server

Intenta el siguiente código:
Código SQL:
Ver original
  1. CREATE TABLE TABLE1(id INT, nombre VARCHAR(MAX), valor INT);
  2. GO
  3.  
  4. INSERT INTO TABLE1 SELECT 1, 'Juan', 12;
  5. INSERT INTO TABLE1 SELECT 2, 'Juan', 32;
  6. INSERT INTO TABLE1 SELECT 3, 'Juan', 51;
  7. INSERT INTO TABLE1 SELECT 4, 'Mario', 58;
  8. INSERT INTO TABLE1 SELECT 5, 'Mario', 19;
  9. INSERT INTO TABLE1 SELECT 6, 'Mario', 74;
  10. INSERT INTO TABLE1 SELECT 7, 'Melisa', 27;
  11. INSERT INTO TABLE1 SELECT 8, 'Melisa', 58;
  12. INSERT INTO TABLE1 SELECT 9, 'Melisa', 36;
  13. INSERT INTO TABLE1 SELECT 10, 'Carlos', 27;
  14. INSERT INTO TABLE1 SELECT 11, 'Carlos', 11;
  15. GO
  16.  
  17. WITH T AS
  18. (SELECT ROW_NUMBER() OVER(Partition BY nombre ORDER BY id) Nm,
  19.         *
  20. FROM    TABLE1)
  21. SELECT  nombre,
  22.         IsNull(MAX(CASE WHEN Nm=1 THEN CAST(Valor AS VARCHAR) END),'-')+','
  23.         +IsNull(MAX(CASE WHEN Nm=2 THEN CAST(Valor AS VARCHAR) END),'-')+','
  24.         +IsNull(MAX(CASE WHEN Nm=3 THEN CAST(Valor AS VARCHAR) END),'-')
  25. FROM    T
  26. GROUP BY nombre;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 10/10/2012, 22:33
 
Fecha de Ingreso: octubre-2012
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Consulta sql server

Me funciono!!! gracias GeriReshef , me soluciono el problema. Solo el simple detalle de que queria cada valor en su propio espacio (sin comas) asi:


WITH T AS
(SELECT Row_Number() Over(Partition BY nombre ORDER BY id) Nm,
*
FROM TABLE1)
SELECT nombre,
IsNull(Max(Case When Nm=1 Then Cast(Valor AS Varchar) End),'-'),
IsNull(Max(Case When Nm=2 Then Cast(Valor AS Varchar) End),'-'),
IsNull(Max(Case When Nm=3 Then Cast(Valor AS Varchar) End),'-')
FROM T
GROUP BY nombre;


GRACIAS.
  #4 (permalink)  
Antiguo 12/10/2012, 14:31
 
Fecha de Ingreso: octubre-2012
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Consulta sql server

El query esta bien, pero no me funciona cuando lo trato de ejecutar en java eclipse usando sql server, me da un error de sintaxis, no reconoce el GO WITH

Etiquetas: querie, server, sql
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:00.