Ver Mensaje Individual
  #10 (permalink)  
Antiguo 06/10/2010, 16:33
Avatar de iislas
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: Como puedo hacer ?

degauss, resolvamos este problema, de la forma no mas ortodoxa, sin entrar en discusion que tenemos un poblema de diseño con su tabla de entrada.

Esto es solo un "tip" y debe tomarse como tal, al final de haber probado este codigo, usted decida que hacer:

Código SQL:
Ver original
  1. -- Creo mi tabla de paso
  2. CREATE TABLE #test (id INT, Name VARCHAR(30), Valor CHAR(2))
  3. -- Inserto mis registros de paso
  4. INSERT INTO #test VALUES(1 ,'Field_A','XX')
  5. INSERT INTO #test VALUES(1 ,'Field_B','ZZ')
  6. INSERT INTO #test VALUES(1 ,'Field_C','XX')
  7. INSERT INTO #test VALUES(2 ,'Field_A','DD')
  8. INSERT INTO #test VALUES(2 ,'Field_C','FF')
  9. INSERT INTO #test VALUES(3 ,'Field_B','WW')
  10.  
  11. -- Creo una tabla de resultado
  12. CREATE TABLE #Resultado (id INT, Field_A CHAR(2), Field_B CHAR(2), Field_C CHAR(2))
  13. -- Inserto los ID distintos de mi tabla de paso
  14. INSERT INTO #Resultado (id)
  15. SELECT DISTINCT ID FROM #test
  16. -- Actualizo la primera columna FIELD_A de mi tabla resultado
  17. UPDATE #Resultado SET Field_A = LaUnion.FIELD_A
  18. FROM(
  19. SELECT
  20. t1.id, t1.Valor AS FIELD_A,
  21. '' AS FIELD_B,
  22. '' AS FIELD_C
  23. FROM
  24. #test t1
  25. WHERE
  26. t1.Name = 'FIELD_A'
  27. UNION
  28. SELECT
  29. t1.id, '' AS FIELD_A,
  30. t1.Valor AS FIELD_B,
  31. '' AS FIELD_C
  32. FROM
  33. #test t1
  34. WHERE
  35. t1.Name = 'FIELD_B'
  36. UNION
  37. SELECT
  38. t1.id, '' AS FIELD_A,
  39. '' AS FIELD_B,
  40. t1.valor AS FIELD_C
  41. FROM
  42. #test t1
  43. WHERE
  44. t1.Name = 'FIELD_C'
  45. ) AS LaUnion JOIN Resultado ON LaUnion.ID = Resultado.id
  46. WHERE LEN(LaUnion.FIELD_A) > 0
  47.  
  48. -- Verifico la solucion
  49. SELECT * FROM #Resultado

PD: No utilizo las soluciones aqui expuestas por FLAVIOVICH e ERWINRP, ya que no hay una sumatoria que nos puediera ayudar con el GROUP BY.

Si alguien tiene alguna propuesta mejor, quisiera verla
__________________
MCTS Isaias Islas