none
Cada Resultado numa Coluna RRS feed

  • Pergunta

  • SELECT
     ITENS.CODTRF            AS QUEBRA$,
     ITENS.NOME,
        ITENS.CODTAREFA         AS CODTAREFA,
     ITENS.DESCISM,
     ITENS.CODUND            AS UND_INSUMO,
     SUM(ITENS.QTDEPREV)     AS QTD_PREVISTA,
     SUM(ITENS.QTDCOMPRADA)  AS QTD_COMPRADA,

     CASE
      WHEN SUM(ITENS.QTDEPREV) > 0 THEN (SUM(ITENS.QTDCOMPRADA)/ SUM(ITENS.QTDEPREV)) * 100.00
      ELSE 0
     END                 AS '%',
     AVG(ITENS.VALORPREV)AS 'VALORPREV' ,
        SUM(ITENS.VALORREAL)AS 'VALORREAL' ,
     CASE
      WHEN AVG(ITENS.VALORPREV) > 0 THEN (SUM(ITENS.VALORREAL)/ SUM(ITENS.VALORPREV)) * 100.00
      ELSE 0
     END                 AS '% REAL'
    FROM
     (
     /* ORÇAMENTO */
    SELECT
            MTRF.CODTRF,
            MTRF.NOME,
            MTRF.CODUND,
            MISM.DESCISM,
            MISM.CODUND,
           MABCISM.QUANTIDADE,
      NULL,
            MABCISM.VALOR +  MABCISM.VALORIMPRODUTIVO,
            NULL
         
             FROM MABCISM
    INNER JOIN MTRF ON
    MTRF.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MTRF.IDPRJ = MABCISM.IDPRJ
    AND  MTRF.IDTRF = MABCISM.IDOBRA
    INNER JOIN MISM ON
    MISM.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MISM.IDPRJ = MABCISM.IDPRJREC
    AND  MISM.IDISM = MABCISM.IDISM
    INNER JOIN MPRJ ON
    MPRJ.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MPRJ.IDPRJ   = MABCISM.IDPRJ
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* BAIXA DE ESTOQUE*/
     SELECT
      MTRF.CODTRF,
      MTRF.NOME,
            MTRF.CODUND,
      COALESCE(MISM.DESCISM, TPRD.NOMEFANTASIA),
      COALESCE(MISM.CODUND, CODUNDCONTROLE),
      NULL,
      TITMMOV.QUANTIDADE,
      NULL,
      TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN TITMMOV ON
        MTRF.IDPRJ = TITMMOV.IDPRJ
        AND MTRF.IDTRF = TITMMOV.IDTRF
        AND MTRF.CODCOLIGADA = TITMMOV.CODCOLIGADA
       JOIN TMOV ON
        TITMMOV.IDMOV = TMOV.IDMOV
        AND TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA
        AND TMOV.CODTMV = '4.1.03'
        AND TMOV.DATAEMISSAO >= '2010-01-01'
                                    AND TMOV.DATAEMISSAO <= '2010-02-28'
       JOIN TPRD ON
        TITMMOV.IDPRD = TPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = TPRD.CODCOLIGADA
       LEFT JOIN MISMPRD ON
        TITMMOV.IDPRJ = MISMPRD.IDPRJ
        AND TITMMOV.IDPRD = MISMPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = MISMPRD.CODCOLIGADA
       LEFT JOIN MISM ON
        MISMPRD.IDPRJ = MISM.IDPRJ
        AND MISMPRD.IDISM = MISM.IDISM
        AND MISMPRD.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* CONTAS DE CONSUMO */
     SELECT
      MTRF.CODTRF,
       MTRF.NOME,
            MTRF.CODUND,
        COALESCE(MISM.DESCISM, TPRD.NOMEFANTASIA),
      COALESCE(MISM.CODUND, CODUNDCONTROLE),
      NULL,
      TITMMOV.QUANTIDADE,
      NULL,
      TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN TITMMOV ON
        MTRF.IDPRJ = TITMMOV.IDPRJ
        AND MTRF.IDTRF = TITMMOV.IDTRF
        AND MTRF.CODCOLIGADA = TITMMOV.CODCOLIGADA
       JOIN TMOV ON
        TITMMOV.IDMOV = TMOV.IDMOV
        AND TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA
        AND TMOV.CODTMV = '1.2.01'
        AND TMOV.DATAEMISSAO >= '2010-01-01'
                                    AND TMOV.DATAEMISSAO <= '2010-02-28'
       JOIN TPRD ON
        TITMMOV.IDPRD = TPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = TPRD.CODCOLIGADA
       LEFT JOIN MISMPRD ON
        TITMMOV.IDPRJ = MISMPRD.IDPRJ
        AND TITMMOV.IDPRD = MISMPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = MISMPRD.CODCOLIGADA
       LEFT JOIN MISM ON
        MISMPRD.IDPRJ = MISM.IDPRJ
        AND MISMPRD.IDISM = MISM.IDISM
        AND MISMPRD.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* APROPRIAÇÕES */
     SELECT
      MTRF.CODTRF,
       MTRF.NOME,
            MTRF.CODUND,
      MISM.DESCISM,
      MISM.CODUND,
      NULL,
      MISMAPROP.QUANTIDADE,
      NULL,
                    MISMAPROP.QUANTIDADE*MISMAPROP.PRECOUNITARIO
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN MISMAPROP ON
        MTRF.IDPRJ = MISMAPROP.IDPRJ
        AND MTRF.IDTRF = MISMAPROP.IDTRF
        AND MTRF.CODCOLIGADA = MISMAPROP.CODCOLIGADA
        AND MISMAPROP.DATAAPROPRIACAO >= '2010-01-01'
                                    AND MISMAPROP.DATAAPROPRIACAO <= '2010-02-28'
       JOIN MISM ON
        MISMAPROP.IDPRJ = MISM.IDPRJ
        AND MISMAPROP.IDISM = MISM.IDISM
        AND MISMAPROP.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* MEDIÇÕES */
     SELECT
      MTRF.CODTRF,
      MTRF.NOME,
            MTRF.CODUND,
      MISM.DESCISM,
      MISM.CODUND,
      NULL,
      MTRFMED.QUANTIDADEMEDIDA * (MRECCMP.quantidade /10000.000),
      NULL,
             MTRFMED.QUANTIDADEMEDIDA * (MRECCMP.QUANTIDADE /10000.000) *(MRECCMP.VALORUNIT  )
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN MITMCNT ON
        MTRF.IDPRJ = MITMCNT.IDPRJ
        AND MTRF.IDTRF = MITMCNT.IDTRF
        AND MTRF.CODCOLIGADA = MITMCNT.CODCOLIGADA
       JOIN MTRFMED ON
        MITMCNT.IDPRJ = MTRFMED.IDPRJ
        AND MITMCNT.IDCNT = MTRFMED.IDCNT
        AND MITMCNT.IDCNT = MTRFMED.IDCNT
        AND MITMCNT.IDITMCNT = MTRFMED.IDITMCNT
       JOIN MPDO ON
        MTRFMED.IDPRJ = MPDO.IDPRJ
        AND MTRFMED.IDCNT = MPDO.IDCNT
        AND MTRFMED.PERIODOMED = MPDO.PERIODOMED
        AND MTRFMED.CODCOLIGADA = MPDO.CODCOLIGADA
        AND MPDO.DATAINICIO >= '2010-01-01'
                                    AND MPDO.DATAFIM    <= '2010-02-28'
       JOIN MCMP ON
        MTRF.IDPRJ = MCMP.IDPRJ
        AND MTRF.IDCMP = MCMP.IDCMP
        AND MTRF.CODCOLIGADA = MCMP.CODCOLIGADA
       JOIN MRECCMP ON
        MCMP.IDPRJ = MRECCMP.IDPRJ
        AND MCMP.IDCMP = MRECCMP.IDCMP
        AND MCMP.CODCOLIGADA = MRECCMP.CODCOLIGADA
       JOIN MISM ON
        MRECCMP.IDPRJ = MISM.IDPRJ
        AND MRECCMP.IDISM = MISM.IDISM
        AND MRECCMP.CODCOLIGADA = MISM.CODCOLIGADA
        AND MISM.GRUPODNER = 'B'
       
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     )
     ITENS(CODTRF, NOME,CODTAREFA, DESCISM, CODUND, QTDEPREV, QTDCOMPRADA, VALORPREV, VALORREAL)
    GROUP BY
     ITENS.CODTRF,
     ITENS.NOME,
        ITENS.CODTAREFA,
     ITENS.DESCISM,
     ITENS.CODUND
    ORDER BY
     QUEBRA$


    Resultado
    Insumo                                                                                 Und                       QTD Previ                        QTD REAL
    AZULEJO 20 X 20 BRANCO                                             M²                        NULL                             1.000000000000
    Bica corrida (incl. 0% IUM) s/ frete                                       M3                       3.0000                            2.800000000000
    Cam tanque 1315/48 PBT=12,9t (6.000L)                           H                          10.0000                           10.000000000000


    Esse QTD Real na verdade e a soma dos UNION  REQUISIÇÃO DE ESTOQUE
                                    UNION  COMPRAS

    Vejam o resultado de cada UNION separado

    Do Requisao de Estoque

    Bica corrida (incl. 0% IUM) s/ frete           M3     NULL       2.0000

    De Compras

    Bica corrida (incl. 0% IUM) s/ frete           M3      NULL      0.8000

    Qual seria o resultado que desejo

    Insumo                                                                                 Und                       QTD Previ                      QTD Comprada         QTD REAl
    AZULEJO 20 X 20 BRANCO                                             M²                        NULL                            1.000000000000        1
    Bica corrida (incl. 0% IUM) s/ frete                                  M3                       3.0000                            0.800000000000        2
    Cam tanque 1315/48 PBT=12,9t (6.000L)                           H                          10.0000                          10.000000000000      10


    nao sei como separar esse resultado, estou tentando mas nao estou conseguindo, agradeço a ajuda de todos voces



    terça-feira, 2 de fevereiro de 2010 18:07

Respostas

  • Resultado

    SELECT
     ITENS.CODTRF            AS QUEBRA$,
     ITENS.NOME,
        ITENS.CODTAREFA         AS CODTAREFA,
     ITENS.DESCISM,
     ITENS.CODUND            AS UND_INSUMO,
     SUM(ITENS.QTDEPREV)     AS QTD_PREVISTA,
     SUM(ITENS.QTDCOMPRADA)  AS QTD_COMPRADA,
         SUM(ITENS.QTDREAL)  AS 'REAL',
     
      /*  CASE
      WHEN SUM(ITENS.QTDEPREV) > 0 THEN (SUM(ITENS.QTDCOMPRADA)/ SUM(ITENS.QTDEPREV)) * 100.00
      ELSE 0
     END                 AS '%',*/
     AVG(ITENS.VALORPREV)AS 'VALORPREV' ,
        SUM(ITENS.VALORREAL)AS 'VALORREAL'
      
     /*CASE
      WHEN AVG(ITENS.VALORPREV) > 0 THEN (SUM(ITENS.VALORREAL)/ SUM(ITENS.VALORPREV)) * 100.00
      ELSE 0
     END                 AS '% REAL'*/
    FROM
     (
     /* ORÇAMENTO */
    SELECT
            MTRF.CODTRF,
            MTRF.NOME,
            MTRF.CODUND,
            MISM.DESCISM,
            MISM.CODUND,
            MABCISM.QUANTIDADE,
            NULL,
            MABCISM.VALOR +  MABCISM.VALORIMPRODUTIVO,
            NULL,
            NULL
         
             FROM MABCISM
    INNER JOIN MTRF ON
    MTRF.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MTRF.IDPRJ = MABCISM.IDPRJ
    AND  MTRF.IDTRF = MABCISM.IDOBRA
    INNER JOIN MISM ON
    MISM.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MISM.IDPRJ = MABCISM.IDPRJREC
    AND  MISM.IDISM = MABCISM.IDISM
    INNER JOIN MPRJ ON
    MPRJ.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MPRJ.IDPRJ   = MABCISM.IDPRJ
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* BAIXA DE ESTOQUE*/
     SELECT
      MTRF.CODTRF,
      MTRF.NOME,
            MTRF.CODUND,
      COALESCE(MISM.DESCISM, TPRD.NOMEFANTASIA),
      COALESCE(MISM.CODUND, CODUNDCONTROLE),
      NULL,
            NULL,
            NULL,
      TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO,
            TITMMOV.QUANTIDADE
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN TITMMOV ON
        MTRF.IDPRJ = TITMMOV.IDPRJ
        AND MTRF.IDTRF = TITMMOV.IDTRF
        AND MTRF.CODCOLIGADA = TITMMOV.CODCOLIGADA
       JOIN TMOV ON
        TITMMOV.IDMOV = TMOV.IDMOV
        AND TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA
        AND TMOV.CODTMV = '4.1.03'
        AND TMOV.DATAEMISSAO >= '2010-01-01'
                                    AND TMOV.DATAEMISSAO <= '2010-02-28'
       JOIN TPRD ON
        TITMMOV.IDPRD = TPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = TPRD.CODCOLIGADA
       LEFT JOIN MISMPRD ON
        TITMMOV.IDPRJ = MISMPRD.IDPRJ
        AND TITMMOV.IDPRD = MISMPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = MISMPRD.CODCOLIGADA
       LEFT JOIN MISM ON
        MISMPRD.IDPRJ = MISM.IDPRJ
        AND MISMPRD.IDISM = MISM.IDISM
        AND MISMPRD.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* CONTAS DE CONSUMO */
     SELECT
      MTRF.CODTRF,
       MTRF.NOME,
            MTRF.CODUND,
        COALESCE(MISM.DESCISM, TPRD.NOMEFANTASIA),
      COALESCE(MISM.CODUND, CODUNDCONTROLE),
      NULL,
      TITMMOV.QUANTIDADE,
      NULL,
      TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO,
            NULL
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN TITMMOV ON
        MTRF.IDPRJ = TITMMOV.IDPRJ
        AND MTRF.IDTRF = TITMMOV.IDTRF
        AND MTRF.CODCOLIGADA = TITMMOV.CODCOLIGADA
       JOIN TMOV ON
        TITMMOV.IDMOV = TMOV.IDMOV
        AND TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA
        AND TMOV.CODTMV = '1.2.01'
        AND TMOV.DATAEMISSAO >= '2010-01-01'
                                    AND TMOV.DATAEMISSAO <= '2010-02-28'
       JOIN TPRD ON
        TITMMOV.IDPRD = TPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = TPRD.CODCOLIGADA
       LEFT JOIN MISMPRD ON
        TITMMOV.IDPRJ = MISMPRD.IDPRJ
        AND TITMMOV.IDPRD = MISMPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = MISMPRD.CODCOLIGADA
       LEFT JOIN MISM ON
        MISMPRD.IDPRJ = MISM.IDPRJ
        AND MISMPRD.IDISM = MISM.IDISM
        AND MISMPRD.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* APROPRIAÇÕES */
     SELECT
      MTRF.CODTRF,
       MTRF.NOME,
            MTRF.CODUND,
      MISM.DESCISM,
      MISM.CODUND,
      NULL,
      MISMAPROP.QUANTIDADE,
      NULL,
            MISMAPROP.QUANTIDADE*MISMAPROP.PRECOUNITARIO,
            NULL
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN MISMAPROP ON
        MTRF.IDPRJ = MISMAPROP.IDPRJ
        AND MTRF.IDTRF = MISMAPROP.IDTRF
        AND MTRF.CODCOLIGADA = MISMAPROP.CODCOLIGADA
        AND MISMAPROP.DATAAPROPRIACAO >= '2010-01-01'
                                    AND MISMAPROP.DATAAPROPRIACAO <= '2010-02-28'
       JOIN MISM ON
        MISMAPROP.IDPRJ = MISM.IDPRJ
        AND MISMAPROP.IDISM = MISM.IDISM
        AND MISMAPROP.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* MEDIÇÕES */
     SELECT
      MTRF.CODTRF,
      MTRF.NOME,
            MTRF.CODUND,
      MISM.DESCISM,
      MISM.CODUND,
      NULL,
      MTRFMED.QUANTIDADEMEDIDA * (MRECCMP.quantidade /10000.000),
      NULL,
         MTRFMED.QUANTIDADEMEDIDA * (MRECCMP.QUANTIDADE /10000.000) *(MRECCMP.VALORUNIT),
            NULL
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN MITMCNT ON
        MTRF.IDPRJ = MITMCNT.IDPRJ
        AND MTRF.IDTRF = MITMCNT.IDTRF
        AND MTRF.CODCOLIGADA = MITMCNT.CODCOLIGADA
       JOIN MTRFMED ON
        MITMCNT.IDPRJ = MTRFMED.IDPRJ
        AND MITMCNT.IDCNT = MTRFMED.IDCNT
        AND MITMCNT.IDCNT = MTRFMED.IDCNT
        AND MITMCNT.IDITMCNT = MTRFMED.IDITMCNT
       JOIN MPDO ON
        MTRFMED.IDPRJ = MPDO.IDPRJ
        AND MTRFMED.IDCNT = MPDO.IDCNT
        AND MTRFMED.PERIODOMED = MPDO.PERIODOMED
        AND MTRFMED.CODCOLIGADA = MPDO.CODCOLIGADA
        AND MPDO.DATAINICIO >= '2010-01-01'
                                    AND MPDO.DATAFIM    <= '2010-02-28'
       JOIN MCMP ON
        MTRF.IDPRJ = MCMP.IDPRJ
        AND MTRF.IDCMP = MCMP.IDCMP
        AND MTRF.CODCOLIGADA = MCMP.CODCOLIGADA
       JOIN MRECCMP ON
        MCMP.IDPRJ = MRECCMP.IDPRJ
        AND MCMP.IDCMP = MRECCMP.IDCMP
        AND MCMP.CODCOLIGADA = MRECCMP.CODCOLIGADA
       JOIN MISM ON
        MRECCMP.IDPRJ = MISM.IDPRJ
        AND MRECCMP.IDISM = MISM.IDISM
        AND MRECCMP.CODCOLIGADA = MISM.CODCOLIGADA
        AND MISM.GRUPODNER = 'B'
       
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     )
     ITENS(CODTRF, NOME,CODTAREFA, DESCISM, CODUND, QTDEPREV, QTDCOMPRADA, VALORPREV, VALORREAL,QTDREAL)
    GROUP BY
     ITENS.CODTRF,
     ITENS.NOME,
        ITENS.CODTAREFA,
     ITENS.DESCISM,
     ITENS.CODUND
    ORDER BY
     QUEBRA$

    Pessoal coloquei mais uma linha em cada Union, e assim consegui trazer o resultado esperado.
    Origado a todos pela ajuda

    • Marcado como Resposta Ronnie Von terça-feira, 2 de fevereiro de 2010 19:18
    terça-feira, 2 de fevereiro de 2010 19:14

Todas as Respostas


  • Pessoal Boa tarde a todos, preciso da ajuda de voces, para poder separar um resultado que esta numa so coluna, segue a sentença ,e a explicação do processo.
    Obrigado a todos


    SELECT
     ITENS.CODTRF            AS QUEBRA$,
     ITENS.NOME,
        ITENS.CODTAREFA         AS CODTAREFA,
     ITENS.DESCISM,
     ITENS.CODUND            AS UND_INSUMO,
     SUM(ITENS.QTDEPREV)     AS QTD_PREVISTA,
     SUM(ITENS.QTDCOMPRADA)  AS QTD_COMPRADA,

     CASE
      WHEN SUM(ITENS.QTDEPREV) > 0 THEN (SUM(ITENS.QTDCOMPRADA)/ SUM(ITENS.QTDEPREV)) * 100.00
      ELSE 0
     END                 AS '%',
     AVG(ITENS.VALORPREV)AS 'VALORPREV' ,
        SUM(ITENS.VALORREAL)AS 'VALORREAL' ,
     CASE
      WHEN AVG(ITENS.VALORPREV) > 0 THEN (SUM(ITENS.VALORREAL)/ SUM(ITENS.VALORPREV)) * 100.00
      ELSE 0
     END                 AS '% REAL'
    FROM
     (
     /* ORÇAMENTO */
    SELECT
            MTRF.CODTRF,
            MTRF.NOME,
            MTRF.CODUND,
            MISM.DESCISM,
            MISM.CODUND,
           MABCISM.QUANTIDADE,
      NULL,
            MABCISM.VALOR +  MABCISM.VALORIMPRODUTIVO,
            NULL
         
             FROM MABCISM
    INNER JOIN MTRF ON
    MTRF.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MTRF.IDPRJ = MABCISM.IDPRJ
    AND  MTRF.IDTRF = MABCISM.IDOBRA
    INNER JOIN MISM ON
    MISM.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MISM.IDPRJ = MABCISM.IDPRJREC
    AND  MISM.IDISM = MABCISM.IDISM
    INNER JOIN MPRJ ON
    MPRJ.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MPRJ.IDPRJ   = MABCISM.IDPRJ
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* BAIXA DE ESTOQUE*/
     SELECT
      MTRF.CODTRF,
      MTRF.NOME,
            MTRF.CODUND,
      COALESCE(MISM.DESCISM, TPRD.NOMEFANTASIA),
      COALESCE(MISM.CODUND, CODUNDCONTROLE),
      NULL,
      TITMMOV.QUANTIDADE,
      NULL,
      TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN TITMMOV ON
        MTRF.IDPRJ = TITMMOV.IDPRJ
        AND MTRF.IDTRF = TITMMOV.IDTRF
        AND MTRF.CODCOLIGADA = TITMMOV.CODCOLIGADA
       JOIN TMOV ON
        TITMMOV.IDMOV = TMOV.IDMOV
        AND TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA
        AND TMOV.CODTMV = '4.1.03'
        AND TMOV.DATAEMISSAO >= '2010-01-01'
                                    AND TMOV.DATAEMISSAO <= '2010-02-28'
       JOIN TPRD ON
        TITMMOV.IDPRD = TPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = TPRD.CODCOLIGADA
       LEFT JOIN MISMPRD ON
        TITMMOV.IDPRJ = MISMPRD.IDPRJ
        AND TITMMOV.IDPRD = MISMPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = MISMPRD.CODCOLIGADA
       LEFT JOIN MISM ON
        MISMPRD.IDPRJ = MISM.IDPRJ
        AND MISMPRD.IDISM = MISM.IDISM
        AND MISMPRD.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* CONTAS DE CONSUMO */
     SELECT
      MTRF.CODTRF,
       MTRF.NOME,
            MTRF.CODUND,
        COALESCE(MISM.DESCISM, TPRD.NOMEFANTASIA),
      COALESCE(MISM.CODUND, CODUNDCONTROLE),
      NULL,
      TITMMOV.QUANTIDADE,
      NULL,
      TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN TITMMOV ON
        MTRF.IDPRJ = TITMMOV.IDPRJ
        AND MTRF.IDTRF = TITMMOV.IDTRF
        AND MTRF.CODCOLIGADA = TITMMOV.CODCOLIGADA
       JOIN TMOV ON
        TITMMOV.IDMOV = TMOV.IDMOV
        AND TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA
        AND TMOV.CODTMV = '1.2.01'
        AND TMOV.DATAEMISSAO >= '2010-01-01'
                                    AND TMOV.DATAEMISSAO <= '2010-02-28'
       JOIN TPRD ON
        TITMMOV.IDPRD = TPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = TPRD.CODCOLIGADA
       LEFT JOIN MISMPRD ON
        TITMMOV.IDPRJ = MISMPRD.IDPRJ
        AND TITMMOV.IDPRD = MISMPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = MISMPRD.CODCOLIGADA
       LEFT JOIN MISM ON
        MISMPRD.IDPRJ = MISM.IDPRJ
        AND MISMPRD.IDISM = MISM.IDISM
        AND MISMPRD.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* APROPRIAÇÕES */
     SELECT
      MTRF.CODTRF,
       MTRF.NOME,
            MTRF.CODUND,
      MISM.DESCISM,
      MISM.CODUND,
      NULL,
      MISMAPROP.QUANTIDADE,
      NULL,
                    MISMAPROP.QUANTIDADE*MISMAPROP.PRECOUNITARIO
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN MISMAPROP ON
        MTRF.IDPRJ = MISMAPROP.IDPRJ
        AND MTRF.IDTRF = MISMAPROP.IDTRF
        AND MTRF.CODCOLIGADA = MISMAPROP.CODCOLIGADA
        AND MISMAPROP.DATAAPROPRIACAO >= '2010-01-01'
                                    AND MISMAPROP.DATAAPROPRIACAO <= '2010-02-28'
       JOIN MISM ON
        MISMAPROP.IDPRJ = MISM.IDPRJ
        AND MISMAPROP.IDISM = MISM.IDISM
        AND MISMAPROP.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* MEDIÇÕES */
     SELECT
      MTRF.CODTRF,
      MTRF.NOME,
            MTRF.CODUND,
      MISM.DESCISM,
      MISM.CODUND,
      NULL,
      MTRFMED.QUANTIDADEMEDIDA * (MRECCMP.quantidade /10000.000),
      NULL,
             MTRFMED.QUANTIDADEMEDIDA * (MRECCMP.QUANTIDADE /10000.000) *(MRECCMP.VALORUNIT  )
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN MITMCNT ON
        MTRF.IDPRJ = MITMCNT.IDPRJ
        AND MTRF.IDTRF = MITMCNT.IDTRF
        AND MTRF.CODCOLIGADA = MITMCNT.CODCOLIGADA
       JOIN MTRFMED ON
        MITMCNT.IDPRJ = MTRFMED.IDPRJ
        AND MITMCNT.IDCNT = MTRFMED.IDCNT
        AND MITMCNT.IDCNT = MTRFMED.IDCNT
        AND MITMCNT.IDITMCNT = MTRFMED.IDITMCNT
       JOIN MPDO ON
        MTRFMED.IDPRJ = MPDO.IDPRJ
        AND MTRFMED.IDCNT = MPDO.IDCNT
        AND MTRFMED.PERIODOMED = MPDO.PERIODOMED
        AND MTRFMED.CODCOLIGADA = MPDO.CODCOLIGADA
        AND MPDO.DATAINICIO >= '2010-01-01'
                                    AND MPDO.DATAFIM    <= '2010-02-28'
       JOIN MCMP ON
        MTRF.IDPRJ = MCMP.IDPRJ
        AND MTRF.IDCMP = MCMP.IDCMP
        AND MTRF.CODCOLIGADA = MCMP.CODCOLIGADA
       JOIN MRECCMP ON
        MCMP.IDPRJ = MRECCMP.IDPRJ
        AND MCMP.IDCMP = MRECCMP.IDCMP
        AND MCMP.CODCOLIGADA = MRECCMP.CODCOLIGADA
       JOIN MISM ON
        MRECCMP.IDPRJ = MISM.IDPRJ
        AND MRECCMP.IDISM = MISM.IDISM
        AND MRECCMP.CODCOLIGADA = MISM.CODCOLIGADA
        AND MISM.GRUPODNER = 'B'
       
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     )
     ITENS(CODTRF, NOME,CODTAREFA, DESCISM, CODUND, QTDEPREV, QTDCOMPRADA, VALORPREV, VALORREAL)
    GROUP BY
     ITENS.CODTRF,
     ITENS.NOME,
        ITENS.CODTAREFA,
     ITENS.DESCISM,
     ITENS.CODUND
    ORDER BY
     QUEBRA$


    Resultado
    Insumo                                                                                 Und                       QTD Previ                        QTD REAL
    AZULEJO 20 X 20 BRANCO                                             M²                        NULL                             1.000000000000
    Bica corrida (incl. 0% IUM) s/ frete                                       M3                       3.0000                            2.800000000000
    Cam tanque 1315/48 PBT=12,9t (6.000L)                           H                          10.0000                           10.000000000000


    Esse QTD Real na verdade e a soma dos UNION  REQUISIÇÃO DE ESTOQUE
                                    UNION  COMPRAS

    Vejam o resultado de cada UNION separado

    Do Requisao de Estoque

    Bica corrida (incl. 0% IUM) s/ frete           M3     NULL       2.0000

    De Compras

    Bica corrida (incl. 0% IUM) s/ frete           M3      NULL      0.8000

    Qual seria o resultado que desejo

    Insumo                                                                                 Und                       QTD Previ                      QTD Comprada         QTD REAl
    AZULEJO 20 X 20 BRANCO                                             M²                        NULL                            1.000000000000        1
    Bica corrida (incl. 0% IUM) s/ frete                                  M3                       3.0000                            0.800000000000        2
    Cam tanque 1315/48 PBT=12,9t (6.000L)                           H                          10.0000                          10.000000000000      10


    nao sei como separar esse resultado, estou tentando mas nao estou conseguindo, agradeço a ajuda de todos voces



     


    terça-feira, 2 de fevereiro de 2010 18:09
  • Resultado

    SELECT
     ITENS.CODTRF            AS QUEBRA$,
     ITENS.NOME,
        ITENS.CODTAREFA         AS CODTAREFA,
     ITENS.DESCISM,
     ITENS.CODUND            AS UND_INSUMO,
     SUM(ITENS.QTDEPREV)     AS QTD_PREVISTA,
     SUM(ITENS.QTDCOMPRADA)  AS QTD_COMPRADA,
         SUM(ITENS.QTDREAL)  AS 'REAL',
     
      /*  CASE
      WHEN SUM(ITENS.QTDEPREV) > 0 THEN (SUM(ITENS.QTDCOMPRADA)/ SUM(ITENS.QTDEPREV)) * 100.00
      ELSE 0
     END                 AS '%',*/
     AVG(ITENS.VALORPREV)AS 'VALORPREV' ,
        SUM(ITENS.VALORREAL)AS 'VALORREAL'
      
     /*CASE
      WHEN AVG(ITENS.VALORPREV) > 0 THEN (SUM(ITENS.VALORREAL)/ SUM(ITENS.VALORPREV)) * 100.00
      ELSE 0
     END                 AS '% REAL'*/
    FROM
     (
     /* ORÇAMENTO */
    SELECT
            MTRF.CODTRF,
            MTRF.NOME,
            MTRF.CODUND,
            MISM.DESCISM,
            MISM.CODUND,
            MABCISM.QUANTIDADE,
            NULL,
            MABCISM.VALOR +  MABCISM.VALORIMPRODUTIVO,
            NULL,
            NULL
         
             FROM MABCISM
    INNER JOIN MTRF ON
    MTRF.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MTRF.IDPRJ = MABCISM.IDPRJ
    AND  MTRF.IDTRF = MABCISM.IDOBRA
    INNER JOIN MISM ON
    MISM.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MISM.IDPRJ = MABCISM.IDPRJREC
    AND  MISM.IDISM = MABCISM.IDISM
    INNER JOIN MPRJ ON
    MPRJ.CODCOLIGADA = MABCISM.CODCOLIGADA
    AND MPRJ.IDPRJ   = MABCISM.IDPRJ
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* BAIXA DE ESTOQUE*/
     SELECT
      MTRF.CODTRF,
      MTRF.NOME,
            MTRF.CODUND,
      COALESCE(MISM.DESCISM, TPRD.NOMEFANTASIA),
      COALESCE(MISM.CODUND, CODUNDCONTROLE),
      NULL,
            NULL,
            NULL,
      TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO,
            TITMMOV.QUANTIDADE
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN TITMMOV ON
        MTRF.IDPRJ = TITMMOV.IDPRJ
        AND MTRF.IDTRF = TITMMOV.IDTRF
        AND MTRF.CODCOLIGADA = TITMMOV.CODCOLIGADA
       JOIN TMOV ON
        TITMMOV.IDMOV = TMOV.IDMOV
        AND TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA
        AND TMOV.CODTMV = '4.1.03'
        AND TMOV.DATAEMISSAO >= '2010-01-01'
                                    AND TMOV.DATAEMISSAO <= '2010-02-28'
       JOIN TPRD ON
        TITMMOV.IDPRD = TPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = TPRD.CODCOLIGADA
       LEFT JOIN MISMPRD ON
        TITMMOV.IDPRJ = MISMPRD.IDPRJ
        AND TITMMOV.IDPRD = MISMPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = MISMPRD.CODCOLIGADA
       LEFT JOIN MISM ON
        MISMPRD.IDPRJ = MISM.IDPRJ
        AND MISMPRD.IDISM = MISM.IDISM
        AND MISMPRD.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* CONTAS DE CONSUMO */
     SELECT
      MTRF.CODTRF,
       MTRF.NOME,
            MTRF.CODUND,
        COALESCE(MISM.DESCISM, TPRD.NOMEFANTASIA),
      COALESCE(MISM.CODUND, CODUNDCONTROLE),
      NULL,
      TITMMOV.QUANTIDADE,
      NULL,
      TITMMOV.QUANTIDADE * TITMMOV.PRECOUNITARIO,
            NULL
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN TITMMOV ON
        MTRF.IDPRJ = TITMMOV.IDPRJ
        AND MTRF.IDTRF = TITMMOV.IDTRF
        AND MTRF.CODCOLIGADA = TITMMOV.CODCOLIGADA
       JOIN TMOV ON
        TITMMOV.IDMOV = TMOV.IDMOV
        AND TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA
        AND TMOV.CODTMV = '1.2.01'
        AND TMOV.DATAEMISSAO >= '2010-01-01'
                                    AND TMOV.DATAEMISSAO <= '2010-02-28'
       JOIN TPRD ON
        TITMMOV.IDPRD = TPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = TPRD.CODCOLIGADA
       LEFT JOIN MISMPRD ON
        TITMMOV.IDPRJ = MISMPRD.IDPRJ
        AND TITMMOV.IDPRD = MISMPRD.IDPRD
        AND TITMMOV.CODCOLIGADA = MISMPRD.CODCOLIGADA
       LEFT JOIN MISM ON
        MISMPRD.IDPRJ = MISM.IDPRJ
        AND MISMPRD.IDISM = MISM.IDISM
        AND MISMPRD.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* APROPRIAÇÕES */
     SELECT
      MTRF.CODTRF,
       MTRF.NOME,
            MTRF.CODUND,
      MISM.DESCISM,
      MISM.CODUND,
      NULL,
      MISMAPROP.QUANTIDADE,
      NULL,
            MISMAPROP.QUANTIDADE*MISMAPROP.PRECOUNITARIO,
            NULL
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN MISMAPROP ON
        MTRF.IDPRJ = MISMAPROP.IDPRJ
        AND MTRF.IDTRF = MISMAPROP.IDTRF
        AND MTRF.CODCOLIGADA = MISMAPROP.CODCOLIGADA
        AND MISMAPROP.DATAAPROPRIACAO >= '2010-01-01'
                                    AND MISMAPROP.DATAAPROPRIACAO <= '2010-02-28'
       JOIN MISM ON
        MISMAPROP.IDPRJ = MISM.IDPRJ
        AND MISMAPROP.IDISM = MISM.IDISM
        AND MISMAPROP.CODCOLIGADA = MISM.CODCOLIGADA
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     
     UNION ALL
     
     /* MEDIÇÕES */
     SELECT
      MTRF.CODTRF,
      MTRF.NOME,
            MTRF.CODUND,
      MISM.DESCISM,
      MISM.CODUND,
      NULL,
      MTRFMED.QUANTIDADEMEDIDA * (MRECCMP.quantidade /10000.000),
      NULL,
         MTRFMED.QUANTIDADEMEDIDA * (MRECCMP.QUANTIDADE /10000.000) *(MRECCMP.VALORUNIT),
            NULL
     FROM
      MPRJ
       JOIN MTRF ON
        MPRJ.IDPRJ = MTRF.IDPRJ
        AND MPRJ.CODCOLIGADA = MTRF.CODCOLIGADA
        AND MTRF.SERVICO = 1
       JOIN MITMCNT ON
        MTRF.IDPRJ = MITMCNT.IDPRJ
        AND MTRF.IDTRF = MITMCNT.IDTRF
        AND MTRF.CODCOLIGADA = MITMCNT.CODCOLIGADA
       JOIN MTRFMED ON
        MITMCNT.IDPRJ = MTRFMED.IDPRJ
        AND MITMCNT.IDCNT = MTRFMED.IDCNT
        AND MITMCNT.IDCNT = MTRFMED.IDCNT
        AND MITMCNT.IDITMCNT = MTRFMED.IDITMCNT
       JOIN MPDO ON
        MTRFMED.IDPRJ = MPDO.IDPRJ
        AND MTRFMED.IDCNT = MPDO.IDCNT
        AND MTRFMED.PERIODOMED = MPDO.PERIODOMED
        AND MTRFMED.CODCOLIGADA = MPDO.CODCOLIGADA
        AND MPDO.DATAINICIO >= '2010-01-01'
                                    AND MPDO.DATAFIM    <= '2010-02-28'
       JOIN MCMP ON
        MTRF.IDPRJ = MCMP.IDPRJ
        AND MTRF.IDCMP = MCMP.IDCMP
        AND MTRF.CODCOLIGADA = MCMP.CODCOLIGADA
       JOIN MRECCMP ON
        MCMP.IDPRJ = MRECCMP.IDPRJ
        AND MCMP.IDCMP = MRECCMP.IDCMP
        AND MCMP.CODCOLIGADA = MRECCMP.CODCOLIGADA
       JOIN MISM ON
        MRECCMP.IDPRJ = MISM.IDPRJ
        AND MRECCMP.IDISM = MISM.IDISM
        AND MRECCMP.CODCOLIGADA = MISM.CODCOLIGADA
        AND MISM.GRUPODNER = 'B'
       
     WHERE
      MPRJ.IDPRJ = '302'
      AND MPRJ.CODCOLIGADA = '1'
      AND ((MTRF.CODTRF LIKE '002.01.01' + '%' AND '002.99.99' = '')
      OR (MTRF.CODTRF >= '002.01.01' AND MTRF.CODTRF <=  '002.99.99'))
     )
     ITENS(CODTRF, NOME,CODTAREFA, DESCISM, CODUND, QTDEPREV, QTDCOMPRADA, VALORPREV, VALORREAL,QTDREAL)
    GROUP BY
     ITENS.CODTRF,
     ITENS.NOME,
        ITENS.CODTAREFA,
     ITENS.DESCISM,
     ITENS.CODUND
    ORDER BY
     QUEBRA$

    Pessoal coloquei mais uma linha em cada Union, e assim consegui trazer o resultado esperado.
    Origado a todos pela ajuda

    • Marcado como Resposta Ronnie Von terça-feira, 2 de fevereiro de 2010 19:18
    terça-feira, 2 de fevereiro de 2010 19:14