Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/10/2012, 02:50
GeriReshef
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 10 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