none
Resultado em uma linha RRS feed

  • Pergunta

  • Boa tarde,

    Galera!

    Tenho uma consulta e preciso que o resultado seja gerado em uma única linha, alguém pode ajudar?

    Select IP.ItPedCompQtd, IP.ItPedCompSaldoQtd, IP.ProdCodEstr, P.ProdNome, IP.ItPedCompDataPrevEntrega, PC.PedCompStat, PC.EmpCod, PC.PedCompNum, PC.EntCod, IP.ItPedCompQtdDesm, PC.UserSolicitacao, IP.ItPedCompUnidMedCod, Sum(ELA.EstqLocArmazQtd) As QtdEstq, 0 As QtdEstqEmpen From PED_COMP PC With(NoLock), ITEM_PED_COMP IP With(NoLock) LEFT JOIN ESTQ_LOC_ARMAZ ELA ON ELA.ProdCodEstr = IP.ProdCodEstr, PRODUTO P With(NoLock), PED_COMP_CLASSE_REC_DESP PCR With(NoLock), CLASSE_REC_DESP CRD With(NoLock) Where IP.ItPedCompSaldoQtd > 0 --And PC.PedCompStat in ('Pendente', 'Aberto') And IP.EmpCod = PC.EmpCod And IP.PedCompNum = PC.PedCompNum And PC.PedCompNum = PCR.PedCompNum And P.ProdCodEstr = IP.ProdCodEstr And PCR.ClasseRecDespCodEstr = CRD.ClasseRecDespCodEstr --And (PCR.ClasseRecDespCodEstr = :ClasseRecDespCodEstr or :ClasseRecDespCodEstr = '') And IP.ItPedCompCanc <> 'Parcial' And IP.ItPedCompCanc <> 'Total' AND (IP.ProdCodEstr = '12.01.9036') --AND (IP.ProdCodEstr <= :CodFim or :CodFim = '') AND IP.ItPedCompDataPrevEntrega >= '20160901' AND IP.ItPedCompDataPrevEntrega <= '20160929' --AND (PC.UserSolicitacao = :UserSolicitacao or :UserSolicitacao = '') Group By IP.ItPedCompQtd, IP.ItPedCompSaldoQtd, IP.ProdCodEstr, P.ProdNome, IP.ItPedCompDataPrevEntrega, PC.PedCompStat, PC.EmpCod, PC.PedCompNum, PC.EntCod, IP.ItPedCompQtdDesm, PC.UserSolicitacao, IP.ItPedCompUnidMedCod Union Select IP.ItPedCompQtd, IP.ItPedCompSaldoQtd, IP.ProdCodEstr, P.ProdNome, IP.ItPedCompDataPrevEntrega, PC.PedCompStat, PC.EmpCod, PC.PedCompNum, PC.EntCod, IP.ItPedCompQtdDesm, PC.UserSolicitacao, IP.ItPedCompUnidMedCod, 0, Sum(EE.EstqEmpenQtdCalc) From PED_COMP PC With(NoLock), ITEM_PED_COMP IP With(NoLock) LEFT JOIN ESTQ_EMPEN EE ON EE.ProdCodEstr = IP.ProdCodEstr, PRODUTO P With(NoLock), PED_COMP_CLASSE_REC_DESP PCR With(NoLock), CLASSE_REC_DESP CRD With(NoLock) Where IP.ItPedCompSaldoQtd > 0 --And PC.PedCompStat in ('Pendente', 'Aberto') And IP.EmpCod = PC.EmpCod And IP.PedCompNum = PC.PedCompNum And PC.PedCompNum = PCR.PedCompNum And P.ProdCodEstr = IP.ProdCodEstr And PCR.ClasseRecDespCodEstr = CRD.ClasseRecDespCodEstr --And (PCR.ClasseRecDespCodEstr = :ClasseRecDespCodEstr or :ClasseRecDespCodEstr = '') And IP.ItPedCompCanc <> 'Parcial' And IP.ItPedCompCanc <> 'Total' AND (IP.ProdCodEstr = '12.01.9036') --AND (IP.ProdCodEstr <= :CodFim or :CodFim = '') AND IP.ItPedCompDataPrevEntrega >= '20160901' AND IP.ItPedCompDataPrevEntrega <= '20160929' --AND (PC.UserSolicitacao = :UserSolicitacao or :UserSolicitacao = '') Group By IP.ItPedCompQtd, IP.ItPedCompSaldoQtd, IP.ProdCodEstr, P.ProdNome, IP.ItPedCompDataPrevEntrega, PC.PedCompStat, PC.EmpCod, PC.PedCompNum, PC.EntCod, IP.ItPedCompQtdDesm, PC.UserSolicitacao, IP.ItPedCompUnidMedCod


    quinta-feira, 29 de setembro de 2016 16:06

Respostas

  • Acredito que algo semelhante a isso funcione a ideia e criar um resultado com seu select do jeito que está 

    e apartir dele fazer um sum nas duas ultimas colunas

    SELECT  projecao.ItPedCompQtd ,
            projecao.ItPedCompSaldoQtd ,
            projecao.ProdCodEstr ,
            projecaoProdNome ,
            projecao.ItPedCompDataPrevEntrega ,
            projecao.PedCompStat ,
            projecao.EmpCod ,
            projecao.PedCompNum ,
            projecao.EntCod ,
            projecao.ItPedCompQtdDesm ,
            projecao.UserSolicitacao ,
            projecao.ItPedCompUnidMedCod ,
            SUM(projecao.QtdEstq) AS QtdEstq ,
            SUM(projecao.QtdEstqEmpen) AS QtdEstqEmpen
    FROM    ( SELECT    IP.ItPedCompQtd ,
                        IP.ItPedCompSaldoQtd ,
                        IP.ProdCodEstr ,
                        P.ProdNome ,
                        IP.ItPedCompDataPrevEntrega ,
                        PC.PedCompStat ,
                        PC.EmpCod ,
                        PC.PedCompNum ,
                        PC.EntCod ,
                        IP.ItPedCompQtdDesm ,
                        PC.UserSolicitacao ,
                        IP.ItPedCompUnidMedCod ,
                        SUM(ELA.EstqLocArmazQtd) AS QtdEstq ,
                        0 AS QtdEstqEmpen
              FROM      PED_COMP PC WITH ( NOLOCK ) ,
                        ITEM_PED_COMP IP WITH ( NOLOCK )
                        LEFT JOIN ESTQ_LOC_ARMAZ ELA ON ELA.ProdCodEstr = IP.ProdCodEstr ,
                        PRODUTO P WITH ( NOLOCK ) ,
                        PED_COMP_CLASSE_REC_DESP PCR WITH ( NOLOCK ) ,
                        CLASSE_REC_DESP CRD WITH ( NOLOCK )
              WHERE     IP.ItPedCompSaldoQtd > 0
    --And	PC.PedCompStat in ('Pendente', 'Aberto')
                        AND IP.EmpCod = PC.EmpCod
                        AND IP.PedCompNum = PC.PedCompNum
                        AND PC.PedCompNum = PCR.PedCompNum
                        AND P.ProdCodEstr = IP.ProdCodEstr
                        AND PCR.ClasseRecDespCodEstr = CRD.ClasseRecDespCodEstr
    --And     (PCR.ClasseRecDespCodEstr = :ClasseRecDespCodEstr or :ClasseRecDespCodEstr = '')
                        AND IP.ItPedCompCanc <> 'Parcial'
                        AND IP.ItPedCompCanc <> 'Total'
                        AND ( IP.ProdCodEstr = '12.01.9036' )
    --AND     (IP.ProdCodEstr <= :CodFim or :CodFim = '')
                        AND IP.ItPedCompDataPrevEntrega >= '20160901'
                        AND IP.ItPedCompDataPrevEntrega <= '20160929'
    --AND      (PC.UserSolicitacao = :UserSolicitacao or :UserSolicitacao = '')
    GROUP BY            IP.ItPedCompQtd ,
                        IP.ItPedCompSaldoQtd ,
                        IP.ProdCodEstr ,
                        P.ProdNome ,
                        IP.ItPedCompDataPrevEntrega ,
                        PC.PedCompStat ,
                        PC.EmpCod ,
                        PC.PedCompNum ,
                        PC.EntCod ,
                        IP.ItPedCompQtdDesm ,
                        PC.UserSolicitacao ,
                        IP.ItPedCompUnidMedCod
              UNION
              SELECT    IP.ItPedCompQtd ,
                        IP.ItPedCompSaldoQtd ,
                        IP.ProdCodEstr ,
                        P.ProdNome ,
                        IP.ItPedCompDataPrevEntrega ,
                        PC.PedCompStat ,
                        PC.EmpCod ,
                        PC.PedCompNum ,
                        PC.EntCod ,
                        IP.ItPedCompQtdDesm ,
                        PC.UserSolicitacao ,
                        IP.ItPedCompUnidMedCod ,
                        0 AS QtdEstq ,
                        SUM(EE.EstqEmpenQtdCalc) AS QtdEstqEmpen
              FROM      PED_COMP PC WITH ( NOLOCK ) ,
                        ITEM_PED_COMP IP WITH ( NOLOCK )
                        LEFT JOIN ESTQ_EMPEN EE ON EE.ProdCodEstr = IP.ProdCodEstr ,
                        PRODUTO P WITH ( NOLOCK ) ,
                        PED_COMP_CLASSE_REC_DESP PCR WITH ( NOLOCK ) ,
                        CLASSE_REC_DESP CRD WITH ( NOLOCK )
              WHERE     IP.ItPedCompSaldoQtd > 0
    --And	PC.PedCompStat in ('Pendente', 'Aberto')
                        AND IP.EmpCod = PC.EmpCod
                        AND IP.PedCompNum = PC.PedCompNum
                        AND PC.PedCompNum = PCR.PedCompNum
                        AND P.ProdCodEstr = IP.ProdCodEstr
                        AND PCR.ClasseRecDespCodEstr = CRD.ClasseRecDespCodEstr
    --And     (PCR.ClasseRecDespCodEstr = :ClasseRecDespCodEstr or :ClasseRecDespCodEstr = '')
                        AND IP.ItPedCompCanc <> 'Parcial'
                        AND IP.ItPedCompCanc <> 'Total'
                        AND ( IP.ProdCodEstr = '12.01.9036' )
    --AND     (IP.ProdCodEstr <= :CodFim or :CodFim = '')
                        AND IP.ItPedCompDataPrevEntrega >= '20160901'
                        AND IP.ItPedCompDataPrevEntrega <= '20160929'
    --AND      (PC.UserSolicitacao = :UserSolicitacao or :UserSolicitacao = '')
    GROUP BY            IP.ItPedCompQtd ,
                        IP.ItPedCompSaldoQtd ,
                        IP.ProdCodEstr ,
                        P.ProdNome ,
                        IP.ItPedCompDataPrevEntrega ,
                        PC.PedCompStat ,
                        PC.EmpCod ,
                        PC.PedCompNum ,
                        PC.EntCod ,
                        IP.ItPedCompQtdDesm ,
                        PC.UserSolicitacao ,
                        IP.ItPedCompUnidMedCod
            ) AS projecao
    GROUP BY projecao.ItPedCompQtd ,
            projecao.ItPedCompSaldoQtd ,
            projecao.ProdCodEstr ,
            projecaoProdNome ,
            projecao.ItPedCompDataPrevEntrega ,
            projecao.PedCompStat ,
            projecao.EmpCod ,
            projecao.PedCompNum ,
            projecao.EntCod ,
            projecao.ItPedCompQtdDesm ,
            projecao.UserSolicitacao ,
            projecao.ItPedCompUnidMedCod; 



    Wesley Neves

    quinta-feira, 29 de setembro de 2016 17:01

Todas as Respostas

  • Deleted
    quinta-feira, 29 de setembro de 2016 16:12
  • Acredito que algo semelhante a isso funcione a ideia e criar um resultado com seu select do jeito que está 

    e apartir dele fazer um sum nas duas ultimas colunas

    SELECT  projecao.ItPedCompQtd ,
            projecao.ItPedCompSaldoQtd ,
            projecao.ProdCodEstr ,
            projecaoProdNome ,
            projecao.ItPedCompDataPrevEntrega ,
            projecao.PedCompStat ,
            projecao.EmpCod ,
            projecao.PedCompNum ,
            projecao.EntCod ,
            projecao.ItPedCompQtdDesm ,
            projecao.UserSolicitacao ,
            projecao.ItPedCompUnidMedCod ,
            SUM(projecao.QtdEstq) AS QtdEstq ,
            SUM(projecao.QtdEstqEmpen) AS QtdEstqEmpen
    FROM    ( SELECT    IP.ItPedCompQtd ,
                        IP.ItPedCompSaldoQtd ,
                        IP.ProdCodEstr ,
                        P.ProdNome ,
                        IP.ItPedCompDataPrevEntrega ,
                        PC.PedCompStat ,
                        PC.EmpCod ,
                        PC.PedCompNum ,
                        PC.EntCod ,
                        IP.ItPedCompQtdDesm ,
                        PC.UserSolicitacao ,
                        IP.ItPedCompUnidMedCod ,
                        SUM(ELA.EstqLocArmazQtd) AS QtdEstq ,
                        0 AS QtdEstqEmpen
              FROM      PED_COMP PC WITH ( NOLOCK ) ,
                        ITEM_PED_COMP IP WITH ( NOLOCK )
                        LEFT JOIN ESTQ_LOC_ARMAZ ELA ON ELA.ProdCodEstr = IP.ProdCodEstr ,
                        PRODUTO P WITH ( NOLOCK ) ,
                        PED_COMP_CLASSE_REC_DESP PCR WITH ( NOLOCK ) ,
                        CLASSE_REC_DESP CRD WITH ( NOLOCK )
              WHERE     IP.ItPedCompSaldoQtd > 0
    --And	PC.PedCompStat in ('Pendente', 'Aberto')
                        AND IP.EmpCod = PC.EmpCod
                        AND IP.PedCompNum = PC.PedCompNum
                        AND PC.PedCompNum = PCR.PedCompNum
                        AND P.ProdCodEstr = IP.ProdCodEstr
                        AND PCR.ClasseRecDespCodEstr = CRD.ClasseRecDespCodEstr
    --And     (PCR.ClasseRecDespCodEstr = :ClasseRecDespCodEstr or :ClasseRecDespCodEstr = '')
                        AND IP.ItPedCompCanc <> 'Parcial'
                        AND IP.ItPedCompCanc <> 'Total'
                        AND ( IP.ProdCodEstr = '12.01.9036' )
    --AND     (IP.ProdCodEstr <= :CodFim or :CodFim = '')
                        AND IP.ItPedCompDataPrevEntrega >= '20160901'
                        AND IP.ItPedCompDataPrevEntrega <= '20160929'
    --AND      (PC.UserSolicitacao = :UserSolicitacao or :UserSolicitacao = '')
    GROUP BY            IP.ItPedCompQtd ,
                        IP.ItPedCompSaldoQtd ,
                        IP.ProdCodEstr ,
                        P.ProdNome ,
                        IP.ItPedCompDataPrevEntrega ,
                        PC.PedCompStat ,
                        PC.EmpCod ,
                        PC.PedCompNum ,
                        PC.EntCod ,
                        IP.ItPedCompQtdDesm ,
                        PC.UserSolicitacao ,
                        IP.ItPedCompUnidMedCod
              UNION
              SELECT    IP.ItPedCompQtd ,
                        IP.ItPedCompSaldoQtd ,
                        IP.ProdCodEstr ,
                        P.ProdNome ,
                        IP.ItPedCompDataPrevEntrega ,
                        PC.PedCompStat ,
                        PC.EmpCod ,
                        PC.PedCompNum ,
                        PC.EntCod ,
                        IP.ItPedCompQtdDesm ,
                        PC.UserSolicitacao ,
                        IP.ItPedCompUnidMedCod ,
                        0 AS QtdEstq ,
                        SUM(EE.EstqEmpenQtdCalc) AS QtdEstqEmpen
              FROM      PED_COMP PC WITH ( NOLOCK ) ,
                        ITEM_PED_COMP IP WITH ( NOLOCK )
                        LEFT JOIN ESTQ_EMPEN EE ON EE.ProdCodEstr = IP.ProdCodEstr ,
                        PRODUTO P WITH ( NOLOCK ) ,
                        PED_COMP_CLASSE_REC_DESP PCR WITH ( NOLOCK ) ,
                        CLASSE_REC_DESP CRD WITH ( NOLOCK )
              WHERE     IP.ItPedCompSaldoQtd > 0
    --And	PC.PedCompStat in ('Pendente', 'Aberto')
                        AND IP.EmpCod = PC.EmpCod
                        AND IP.PedCompNum = PC.PedCompNum
                        AND PC.PedCompNum = PCR.PedCompNum
                        AND P.ProdCodEstr = IP.ProdCodEstr
                        AND PCR.ClasseRecDespCodEstr = CRD.ClasseRecDespCodEstr
    --And     (PCR.ClasseRecDespCodEstr = :ClasseRecDespCodEstr or :ClasseRecDespCodEstr = '')
                        AND IP.ItPedCompCanc <> 'Parcial'
                        AND IP.ItPedCompCanc <> 'Total'
                        AND ( IP.ProdCodEstr = '12.01.9036' )
    --AND     (IP.ProdCodEstr <= :CodFim or :CodFim = '')
                        AND IP.ItPedCompDataPrevEntrega >= '20160901'
                        AND IP.ItPedCompDataPrevEntrega <= '20160929'
    --AND      (PC.UserSolicitacao = :UserSolicitacao or :UserSolicitacao = '')
    GROUP BY            IP.ItPedCompQtd ,
                        IP.ItPedCompSaldoQtd ,
                        IP.ProdCodEstr ,
                        P.ProdNome ,
                        IP.ItPedCompDataPrevEntrega ,
                        PC.PedCompStat ,
                        PC.EmpCod ,
                        PC.PedCompNum ,
                        PC.EntCod ,
                        IP.ItPedCompQtdDesm ,
                        PC.UserSolicitacao ,
                        IP.ItPedCompUnidMedCod
            ) AS projecao
    GROUP BY projecao.ItPedCompQtd ,
            projecao.ItPedCompSaldoQtd ,
            projecao.ProdCodEstr ,
            projecaoProdNome ,
            projecao.ItPedCompDataPrevEntrega ,
            projecao.PedCompStat ,
            projecao.EmpCod ,
            projecao.PedCompNum ,
            projecao.EntCod ,
            projecao.ItPedCompQtdDesm ,
            projecao.UserSolicitacao ,
            projecao.ItPedCompUnidMedCod; 



    Wesley Neves

    quinta-feira, 29 de setembro de 2016 17:01
  • Obrigado Wesley, atendeu a minha necessidade,

    abs,

    quinta-feira, 29 de setembro de 2016 17:23