none
union de pivot RRS feed

  • Pregunta

  • buenas tardes tengo dos pivot pero quiero juntarlos en uno solo si me pueden ayudar 

    1 primer pivot 


    ---------------------segunda quincena--------------------------------   
     declare @DTTFECHA datetime = '20180220'
        declare @fecha21 datetime
        select @fecha21 = DATEADD(mm,DATEDIFF(mm,0,'20180220'),0)
     
        declare @fecha22 datetime 
        select @fecha22 = DATEADD(ms,-3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,'20180220')+1,0)))
        
    DECLARE @CABECERAS2 VARCHAR(MAX)
    SELECT @CABECERAS2 = STUFF((SELECT ',['+right('00'+cast(dAY(fecha) as varchar), 2)+']' FROM DBO.FN_RANGOFECHAS  (''+@fecha21+'',''+@fecha22+'')  FOR XML PATH('')), 1, 1, '') 
    ---------------------------------------------------------------------
    ----------------------primera quincena-------------------------------
    declare @fechaini datetime
    select @fechaini = DATEADD(mm,DATEDIFF(mm,0,'20180220'),0)

    declare @fechac2 datetime
    select @fechac2 =DATEADD(ms,-3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,'20180220')+1,0))) 

    DECLARE @CABECERA1 VARCHAR(MAX)
    SELECT @CABECERA1 = STUFF((SELECT ',['+right('00'+cast(dAY(fecha) as varchar), 2)+']' FROM DBO.FN_RANGOFECHAS  (''+@fechaini+'',''+@fechac2+'')  FOR XML PATH('')), 1, 1, '') 
    ---------------------------------------------------------------------

     exec('
    SELECT     p.strNroDocumento AS DNI,
              ( p.strDeApePaterno+ '' '' + p.strDeApeMaterno+ '' '' + p.strDeNombres )as [Apellidos y Nombres],
               pa.intPeNeto AS [P.Neto],
               cast(dAY(j.dettFeEscan) as varchar(20)) AS [Fecha]
              
    into #tmp                      
    FROM         TCJAVA j INNER JOIN
                          TMPERSONAL p ON j.IntIdPersonal = p.intIdPersonal INNER JOIN
                          TMMARCA m on  m.IntIdPersonal = p.intIdPersonal INNER JOIN
                          TCPALLET  pa ON j.intIdPallet = pa.intIdPallet INNER JOIN
                          TSVARIEDAD v ON pa.intIdVariedad = v.intIdVariedad
    WHERE MONTH (j.dettFeEscan) =      MONTH ('''+@DTTFECHA+''')     and  YEAR    (j.dettFeEscan) =      year ('''+@DTTFECHA+''')   and 
    Cast(m.fchFechaTareoReal as date) = '''+@DTTFECHA+'''   and    Cast(m.hrFinTareo as date) = '''+@DTTFECHA+''' 
    group by p.strNroDocumento , p.strDeApePaterno, p.strDeApeMaterno,p.strDeNombres ,j.dettFeEscan,m.fchFechaTareoReal, m.hrFinTareo,pa.intPeNeto

    insert into #tmp
    select DNI,[Apellidos y Nombres],Sum([P.Neto]),[Fecha] from #tmp  group by [Apellidos y Nombres],DNI,[Fecha]
    SELECT DNI,[Apellidos y Nombres], '+@CABECERA1+'
    FROM 
    (
    SELECT DNI,[Apellidos y Nombres],[p.Neto],Fecha FROM #TMP  group by  DNI,[Apellidos y Nombres],[p.Neto],Fecha
    ) p
                          

    PIVOT
    (
    sum([P.Neto])
    FOR [Fecha] IN ( '+@CABECERA1+') ) AS pvt

    ')

     segundo pivot

    ---------------------segunda quincena--------------------------------   
     declare @DTTFECHA datetime = '20180220'
        declare @fecha21 datetime
        select @fecha21 = DATEADD(mm,DATEDIFF(mm,0,'20180220'),0)
     
        declare @fecha22 datetime 
        select @fecha22 = DATEADD(ms,-3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,'20180220')+1,0)))
        
    DECLARE @CABECERAS2 VARCHAR(MAX)
    SELECT @CABECERAS2 = STUFF((SELECT ',['+right('00'+cast(dAY(fecha)as varchar), 2)++'H' +']' FROM DBO.FN_RANGOFECHAS  (''+@fecha21+'',''+@fecha22+'')  FOR XML PATH('')), 1, 1, '') 
    ---------------------------------------------------------------------
    ----------------------primera quincena-------------------------------
    declare @fechaini datetime
    select @fechaini = DATEADD(mm,DATEDIFF(mm,0,'20180220'),0)

    declare @fechac2 datetime
    select @fechac2 =DATEADD(ms,-3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,'20180220')+1,0))) 

    DECLARE @CABECERA1 VARCHAR(MAX)
    SELECT @CABECERA1 = STUFF((SELECT ',['+right('00'+cast(dAY(fecha) as varchar), 2)+']' FROM DBO.FN_RANGOFECHAS  (''+@fechaini+'',''+@fechac2+'')  FOR XML PATH('')), 1, 1, '') 
    ---------------------------------------------------------------------
    exec('
    SELECT     p.strNroDocumento AS DNI,
              ( p.strDeApePaterno+ '' '' + p.strDeApeMaterno+ '' '' + p.strDeNombres )as [Apellidos y Nombres],
                 (DATEDIFF(hh, m.fchFechaTareoReal, m.hrFinTareo)) as [Hora],
               cast(dAY(j.dettFeEscan) as varchar(20)) AS [Fecha],
               case when (DATEDIFF(hh, m.fchFechaTareoReal, m.hrFinTareo)) <= 0 then ''no fue tareado'' else '' '' end Observacion,

    into #tmp                      
    FROM         TCJAVA j INNER JOIN
                          TMPERSONAL p ON j.IntIdPersonal = p.intIdPersonal INNER JOIN
                          TMMARCA m on  m.IntIdPersonal = p.intIdPersonal INNER JOIN
                          TCPALLET  pa ON j.intIdPallet = pa.intIdPallet INNER JOIN
                          TSVARIEDAD v ON pa.intIdVariedad = v.intIdVariedad
    WHERE MONTH (j.dettFeEscan) =      MONTH ('''+@DTTFECHA+''')     and  YEAR    (j.dettFeEscan) =      year ('''+@DTTFECHA+''')   and 
    Cast(m.fchFechaTareoReal as date) = '''+@DTTFECHA+'''   and    Cast(m.hrFinTareo as date) = '''+@DTTFECHA+''' 
    group by p.strNroDocumento , p.strDeApePaterno, p.strDeApeMaterno,p.strDeNombres ,j.dettFeEscan,m.fchFechaTareoReal, m.hrFinTareo,pa.intPeNeto

    insert into #tmp
    select DNI,[Apellidos y Nombres],[Hora],[Fecha],Observacion,0 from #tmp  group by [Apellidos y Nombres],DNI,[Fecha],[Hora],Observacion


    SELECT DNI,[Apellidos y Nombres], '+@CABECERA1+','+@CABECERAs2+',Observacion
    FROM 
    (
    SELECT DNI,[Apellidos y Nombres],[Hora],Fecha,Observacion FROM #TMP group by DNI,[Apellidos y Nombres],[Hora],Fecha,Observacion
    ) p
                          

    PIVOT
    (
    sum([P.Neto])
    FOR [Fecha] IN ( '+@CABECERAS2+') ) AS pvt

    ')

    martes, 20 de marzo de 2018 22:45

Respuestas

  • Hola alondra_123,

    Te comparto un enlace(en ingles) que creo que te puede ayudar con tu consulta, este enlace muestra algo de lo que solicistas, de cualquier forma quedo al pendiente de tus comentarios.

    https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

    Recibe un cordial saludo.
    Gracias por usar los foros de MSDN.

    Tonatiuh Abrego
    _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. 

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    martes, 27 de marzo de 2018 22:03
    Moderador