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

Duda con Query

Estas en el tema de Duda con Query en el foro de SQL Server en Foros del Web. lo que pasa tengo que lograr dejar una query asi : Primary Name Value 1 / Field_A / XX 1 /Field_B / ZZ 1 /Field_C ...
  #1 (permalink)  
Antiguo 05/10/2010, 15:45
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 0
Duda con Query

lo que pasa tengo que lograr dejar una query asi :

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 -----------



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

Logre separar los datos por fila pero necesito que salgan las 3 filas .. onda 1 , 2 ,3 y los que no tengan que salgan en blanco... ademas unirlos hacia el lado con el union me los tira todo hacia abajo alguien tiene alguna idea como haceR?
  #2 (permalink)  
Antiguo 06/10/2010, 08:26
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: Duda con Query

Si tienes SQL 2005, intenta con la funcion PIVOT.
Código SQL:
Ver original
  1. SELECT [PRIMARY], [Field_A], [Field_B], [Field_C]
  2. FROM (
  3.     SELECT [PRIMARY], Name, [VALUE]
  4.     FROM tu_tabla
  5. ) AS SourceTable
  6. PIVOT (
  7.     SUM([VALUE])
  8.     FOR Name IN ([Field_A], [Field_B], [Field_C])
  9. ) AS PivotTable
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 06/10/2010, 13:44
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda con Query

Tengo problemas en agruparlos con el SUM por que value no es numerico .. onda puedo hacer la matriz pero me salen puros 0
  #4 (permalink)  
Antiguo 06/10/2010, 14:29
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: Duda con Query

Muestranos el resultado.
Otra cosa, no dupliques los posteos!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 06/10/2010, 14:30
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda con Query

SELECT prima, isnull([Field_A],0) as [Field_A] ,isnull([Field_B],0) as [Field_B],
isnull([Field_C],0) as [Field_C]
from
(
Select prima, value, name2
from details
) po
Pivot
(
count(value)
for name2 in
([Field_A] , [Field_B],[Field_C])
) as PVT



te mande un mail a tu correo con la foto de los resultados

lo que pasa que ahi me sale pero onda me muestras con 1 donde deben ir las letras esta bien pero no se como hacerlo.
  #6 (permalink)  
Antiguo 06/10/2010, 14:33
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda con Query

el resultado es

Prima---Field_A---Field_B----Field_C
1------------1----------1-----------1
2------------1----------0-----------1
3------------0----------1-----------0
  #7 (permalink)  
Antiguo 06/10/2010, 15:46
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: Duda con Query

Código SQL:
Ver original
  1. SELECT T1.prima, D1.VALUE, D2.VALUE, D3.VALUE
  2. FROM (
  3.     SELECT prima, isnull([Field_A],0) AS [Field_A] ,isnull([Field_B],0) AS [Field_B], isnull([Field_C],0) AS [Field_C]
  4.     FROM (
  5.         SELECT prima, VALUE, name2
  6.         FROM details
  7.     ) po
  8.     Pivot (
  9.         COUNT(VALUE)
  10.         FOR name2 IN ([Field_A], [Field_B], [Field_C])
  11.     ) AS PVT
  12. ) T1
  13. INNER JOIN details D1 ON T1.prima = D1.prima AND D1.name2 = 'Field_A'
  14. INNER JOIN details D2 ON T1.prima = D2.prima AND D2.name2 = 'Field_B'
  15. INNER JOIN details D3 ON T1.prima = D3.prima AND D3.name2 = 'Field_C'
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #8 (permalink)  
Antiguo 06/10/2010, 17:00
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: Duda con Query

2005 !!!!, vamos de haberlo sabido, en fin.

Flaviovich, me gusta la solucion que propones, pero hay algo que no me acaba de convencer, ¿como cambiar los titulos de las columnas y que me de TODOS los registros de entrada.

Saludo
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 06/10/2010, 21:43
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: Duda con Query

Bueno, no he probado ese query, pero dejemos que degauss nos diga.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #10 (permalink)  
Antiguo 07/10/2010, 07:33
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda con Query

la prove saca 1 linea de los datos.... como podria sacarlos todos?

Etiquetas: query
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 11:53.