Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > SQL Server

Respuesta
 
Herramientas Desplegado
Antiguo 14-mar-2008, 08:07   #1 (permalink)
LUISESPOCH ha deshabilitado el karma
 
Avatar de LUISESPOCH
 
Fecha de Ingreso: octubre-2006
Mensajes: 105
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-mar-2008 a las 08:13.
LUISESPOCH está desconectado   Responder Citando
Antiguo 14-mar-2008, 09:34   #2 (permalink)
Colaborador
iislas ha deshabilitado el karma
 
Fecha de Ingreso: julio-2007
Mensajes: 1.391
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.
iislas está desconectado   Responder Citando
Antiguo 14-mar-2008, 11:39   #3 (permalink)
LUISESPOCH ha deshabilitado el karma
 
Avatar de LUISESPOCH
 
Fecha de Ingreso: octubre-2006
Mensajes: 105
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
LUISESPOCH está desconectado   Responder Citando
Antiguo 18-mar-2008, 10:39   #4 (permalink)
Colaborador
iislas ha deshabilitado el karma
 
Fecha de Ingreso: julio-2007
Mensajes: 1.391
Re: Sentencia para dar la vuelta COLUMNAS a FILAS

¿Es SQL Server 2005 su motor de base de datos?
iislas está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:54.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93