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

Sentencia para dar la vuelta COLUMNAS a FILAS

Estas en el tema de Sentencia para dar la vuelta COLUMNAS a FILAS en el foro de SQL Server en Foros del Web. Saludos señores de este foro, Por favor, alguna persona me podria ayudar indicándome una forma de dar la vuelta las COLUMNAS EN FILAS (via SQL) ...
  #1 (permalink)  
Antiguo 14/03/2008, 08:07
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 7 meses
Puntos: 0
Sentencia para dar la vuelta COLUMNAS a FILAS

Saludos señores de este foro,

Por favor, alguna persona me podria ayudar indicándome una forma de dar la vuelta las COLUMNAS EN FILAS (via SQL) de una tabla??

El bloque A es como actualmente tengo los resultados de un SELECT, y quisiera tenerlo de la forma del bloque B.
Si supiera la urgencia que tengo de hacer este artificio para presentar a Gerencia..

Bloque A)

Cultivo____Ventas____CarteraTotal_____CarteraMayor

Banano____10_______15_____________18
Arroz______20_______24.2___________28.69
Flores_____30_______37.2___________31.1
Maíz______40_______45.6___________49.2


Bloque B)

Cultivo___________Banano__Arroz____Flores___Maiz
VENTAS____________10______20_______30______40
CARTERATOTAL____ 15______24.2_____37.2____45.6
CARTERAMAYOR____18______28.69____31.1____49.2





Le estoy viendo demasiado complejo con la sentencia PIVOT, por eso acudo a Uds.

Agradezco nuevamente la ayuda que me pueda brindar...

Saludos,

Luis

Última edición por LUISESPOCH; 14/03/2008 a las 08:13
  #2 (permalink)  
Antiguo 14/03/2008, 09:34
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Re: Sentencia para dar la vuelta COLUMNAS a FILAS

Si hablamos de SQL Server 2000

SELECT
SUM(CASE WHEN Cultivo = 'Banano' THEN ImporteVenta END) as Banano,
SUM(CASE WHEN Cultivo = 'Arroz' THEN ImporteVenta END) as Arroz,
SUM(CASE WHEN Cultivo = 'Flores' THEN ImporteVenta END) as Flores,
SUM(CASE WHEN Cultivo = 'Maiz' THEN ImporteVenta END) as Maiz

Si fuera 2005, entonces revisa la instruccion PIVOT.
  #3 (permalink)  
Antiguo 14/03/2008, 11:39
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Sentencia para dar la vuelta COLUMNAS a FILAS

Amigo IISLAS le agradezco por ayudarme, pero al tratar de hacer con PIVOTE le veo una dificultad, porque mas o menos me queda algo asi..

SELECT 'Cultivo', .....
FROM
(
SELECT Cultivo, VENTAS, CARTERATOTAL CARTERAMAYORXDIAS
FROM @Tbl_Resultado

)v PIVOT (
SUM(???) IN ....

Qué campo iría para la sumatoria porque en mi select no traigo uno que diga cantidad, ya que anteriormente mi tabla la formé en base a funciones

De algo mas o menos asi..

select @VL_IdTipoCultivo=Codigo from @Tbl_Cultivo
where Sec=@Con
INSERT INTO @Tbl_Resultado
(Cultivo,VENTAS,CARTERATOTAL,CARTERAMAYORXDIAS)
select
'Cultivo'=Sige_Catalogo.dbo.Ctl_F_ConDesCatalogo(3 15,@VL_IdTipoCultivo),
'VENTAS'=isnull(Sige_Facturacion.dbo.Fac_F_GetVent asPorCultivo(0,@PI_Fecha,@VL_IdTipoCultivo),0),
'CARTERATOTAL'=isnull(sige_CuentasxCobrar.dbo.Cxc_ F_MostrarCarteraXCobrar(0,@PI_Fecha,0, @VL_IdTipoCultivo) ,0), --Aqui se trae toda la cartera, pero de un Cultivo especifico
'CARTERAMAYORXDIAS'=isnull(sige_CuentasxCobrar.dbo .Cxc_F_MostrarCarteraXCobrar(0,@PI_Fecha,56, @VL_IdTipoCultivo) ,0) --Aqui se trae toda la cartera, pero de un Cultivo especifico
set @Con=@Con+1

Alguna sugerencia amigo?

Atte,
Luis
  #4 (permalink)  
Antiguo 18/03/2008, 10:39
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Re: Sentencia para dar la vuelta COLUMNAS a FILAS

¿Es SQL Server 2005 su motor de base de datos?
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:37.