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

Como puedo hacer ?

Estas en el tema de Como puedo hacer ? en el foro de SQL Server en Foros del Web. Como puedo hacer esto en SQL Primary Name Value 1 Field_A XX 1 Field_B ZZ 1 Field_C XX 2 Field_A DD 2 Field_C FF 3 ...
  #1 (permalink)  
Antiguo 05/10/2010, 09:27
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 0
Como puedo hacer ?

Como puedo hacer esto en SQL


Primary Name Value
1 Field_A XX
1 Field_B ZZ
1 Field_C XX
2 Field_A DD
2 Field_C FF
3 Field_B WW

tengo estos datos en una tabla y necesito obtener esto:

Primary Field_A Field_B Field_C
1 XX ZZ XX
2 DD FF
3 WW


si alguien puede ayudarme se lo agradeceria mucho
  #2 (permalink)  
Antiguo 05/10/2010, 11:08
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: Como puedo hacer ?

Busca en este mismo foro, "Registros a columnas"
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 05/10/2010, 11:30
 
Fecha de Ingreso: octubre-2004
Mensajes: 251
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: Como puedo hacer ?

aca hay un ejemplo

http://database.ittoolbox.com/groups...qlplus-2218591
__________________
www.lomasnuevo.net
  #4 (permalink)  
Antiguo 05/10/2010, 12:08
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: Como puedo hacer ?

pues graicas por "evitarle" la busqueda de la solucion
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 05/10/2010, 13:26
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Como puedo hacer ?

primero gracias por ayudarme alguien no tiene algun ejemplo mas especifico que me pueda ayudar de verdad soy nuevo en el tema de SQL
  #6 (permalink)  
Antiguo 05/10/2010, 14:08
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Como puedo hacer ?

http://www.elguille.info/colabora/NE...ot_SQL2005.htm
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 05/10/2010, 15:14
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Como puedo hacer ?

alguna otra ayuda? que de verdad no me sale el asunto
  #8 (permalink)  
Antiguo 06/10/2010, 12:35
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: Como puedo hacer ?

¿Y si nos muestras como lo estas haciendo?
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 06/10/2010, 13:25
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Como puedo hacer ?

por ejemplo

select
cast(prima as int) as Prima,
cast(value as varchar(10)) as Field_A
from details where name2 = 'Field_A'
group by prima, value

union

select
cast(prima as int) as Prima,
cast(value as varchar(10)) as Field_B
from details where name2 = 'Field_B'
group by prima, value

union

select
cast(prima as int) as Prima,
cast(value as varchar(10)) as Field_C
from details where name2 = 'Field_C'
group by prima, value

asi tengo las que pertenecen a cada uno , consigo obtener los valores por cada FIELD , pero siempre tengo que mostrar las 3 primas y no puedo lograr eso aparte que no se como unirlos, el UNION no me sirve y el Pivot no lo he podido utilizar tampoco
  #10 (permalink)  
Antiguo 06/10/2010, 16:33
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: 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
  #11 (permalink)  
Antiguo 06/10/2010, 16:44
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Como puedo hacer ?

He aqui una propuesta: http://www.forosdelweb.com/f87/duda-con-query-848090/
Que opinas?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #12 (permalink)  
Antiguo 06/10/2010, 17:09
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: Como puedo hacer ?

Si, recien me acabo de enterar que la solucion es para 2005 !!!!

Pero bueno, eso es por falta de informacion (Versioin-Edicion, etc.)

Te deje mis dudas sobre tu propuesta de solucion.
__________________
MCTS Isaias Islas

Etiquetas: Ninguno
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 14:57.