Respondida como realizar una matriz con sql

  • jueves, 29 de marzo de 2012 22:19
     
     

    hola amigos necesito su ayuda en lo siguiente, tengo que realizar un reporte con el reporting services, y tiene que ser una matriz y desearia que me aconsejen como hacerlo el siguiente codigo me devuelve en columnas la primera funcion me devuelve la venta total al contado de clientes, la segunda las cuentas por cobrar vigentes, la tercera cuentas por cobrar vencidas, la ultima lo que se tiene que cobrar.

    bueno hasta todo bien pero en reporte me tiene que lanzar al lado derecho todos los clientes que ya los tengo hecho que son campos estaticos y estas funciones son variables me explico esta funcion tiene que devolverme todas las columnas pero segun las fechas si le pongo desde marzo hasta mayo solo tiene que devolverme solo entre esas fechas y la empresa, como esta en el ejemplo y aqui esta el problema que pasa si es año bisiesto. y es aconsejable convertilo en vista o como sp 

    declare  @Responsable nvarchar(20)
    declare @FechaInicial datetime
    declare @FechaFinal datetime
    declare @Divisa nvarchar(3)
    declare @Compania nvarchar(4)

    set @FechaInicial = '20111005'
    set @FechaFinal = '20120101'
    set @Divisa = 'USD'
    set @Compania  = 'casc'

    ----que puedo aumentar aqui para que solamente lo pueda filtrar por fecha y si es año bisiesto o en donde lo aumento o si pudieran 

    SELECT distinct CUSTACCOUNT As CuentaCliente ,
    SALESRESPONSIBLE  As ResponsableVenta, DATAAREAID As Empresa,

    ACBAXReportingRIBPRO.dbo.ACBFVentaTotalContadoXCliente(SALESRESPONSIBLE,CUSTACCOUNT,@FechaInicial,@FechaFinal,@Divisa,DATAAREAID)  As totalcontado,

    ACBAXReportingRIBPRO.dbo.ACBFCxCConsolidadVigenteXCliente(SALESRESPONSIBLE,CUSTACCOUNT,@FechaInicial,@FechaFinal,@Divisa,DATAAREAID)  As CxCVigente01,

    ACBAXReportingRIBPRO.dbo.ACBFCxCConsolidadVencidaXCliente(SALESRESPONSIBLE,CUSTACCOUNT,@FechaInicial,@FechaFinal,@Divisa,DATAAREAID)  As CxCVencida01,

    ACBAXReportingRIBPRO.dbo.ACBFCobranzaXCliente(SALESRESPONSIBLE,CUSTACCOUNT,@FechaInicial,@FechaFinal,@Divisa,DATAAREAID)  As Cobranza01

    FROM ACBAXReportingRIBPRO.dbo.salestable
    order by ResponsableVenta,Empresa 

    espero haber sido claro y gracias desde ya estoy trabajando con sql 2008 


    omar rojas

Todas las respuestas

  • viernes, 30 de marzo de 2012 9:19
     
     

    Bueno, yo no he terminado de entenderte totalmente, pero tienes disponible el elemento Tablix que te permite agrupar los registros también a nivel columna, de modo que si por ejemplo tienes una fecha y necesitas que aparezca como columna y no como una fila más, simplemente agrupas el conjunto a nivel de columna por dicho campo y listo.

    Echa un vistazo al tema "Trabajar con regiones de datos Tablix" y los relacionados

  • viernes, 30 de marzo de 2012 13:09
     
     

    hola amigos bueno creo no me entendieron bien asi que lo dire directamente mi problema esta en:

    1. el codigo que les paso me devuelve por columas los datos que necesito esta bien, pero a eso nesecito añadirle con los paramentros de ejemplo que tengo que solo me muestre ese rango por ejemplo si pongo en fechainical='20120108' and fechafin='20120415' solo debe aparecerme lo siguiente:

    en el mes de enero tiene que aparecerme las 4 columnas 

    en el mes de febrero tiene que aparecerme las 4 columnas

    hasta abril ose que tiene que ser creciente segun la fecha que ponga en el rango de fechas

    y en el codigo siguiente necesito saber donde lo puedo colocar algun codigo para que me aparesca como les explique y el problema tambien es saber si es año bisiesto para que no aroje datos incorrestos 

    desde ya muchas gracias por su tiempo y su respuesta

    declare  @Responsable nvarchar(20)
    declare @FechaInicial datetime
    declare @FechaFinal datetime
    declare @Divisa nvarchar(3)
    declare @Compania nvarchar(4)

    set @FechaInicial = '20111005'
    set @FechaFinal = '20120101'
    set @Divisa = 'USD'
    set @Compania  = 'casc'

    ----que puedo aumentar aqui para que solamente lo pueda filtrar por fecha y si es año bisiesto o en donde lo aumento o si pudieran 

    SELECT distinct CUSTACCOUNT As CuentaCliente ,
    SALESRESPONSIBLE  As ResponsableVenta, DATAAREAID As Empresa,

    ACBAXReportingRIBPRO.dbo.ACBFVentaTotalContadoXCliente(SALESRESPONSIBLE,CUSTACCOUNT,@FechaInicial,@FechaFinal,@Divisa,DATAAREAID)  As totalcontado,

    ACBAXReportingRIBPRO.dbo.ACBFCxCConsolidadVigenteXCliente(SALESRESPONSIBLE,CUSTACCOUNT,@FechaInicial,@FechaFinal,@Divisa,DATAAREAID)  As CxCVigente01,

    ACBAXReportingRIBPRO.dbo.ACBFCxCConsolidadVencidaXCliente(SALESRESPONSIBLE,CUSTACCOUNT,@FechaInicial,@FechaFinal,@Divisa,DATAAREAID)  As CxCVencida01,

    ACBAXReportingRIBPRO.dbo.ACBFCobranzaXCliente(SALESRESPONSIBLE,CUSTACCOUNT,@FechaInicial,@FechaFinal,@Divisa,DATAAREAID)  As Cobranza01

    FROM ACBAXReportingRIBPRO.dbo.salestable
    order by ResponsableVenta,Empresa 


    omar rojas

  • martes, 10 de abril de 2012 13:46
    Moderador
     
     Respondida

    Hola Omar,

    Lo primero antes que nada, no repitas mensajes para no confundir a los que te puedan contestar con varios hilos al mismo tiempo.

    Partiendo de tu problema, ¿que es lo que te queda? ¿donde no puedes continuar?

    Un Saludo


    Fran Díaz | twitter: @frandiaz_ | Blog: {geeks.ms/blogs/fdiaz/} | Communities: {onobanet.es} & {secondnug.com}

    • Marcado como respuesta roma1003 viernes, 20 de abril de 2012 0:43
    •