none
Help SQL - Retorno de campos agrupados RRS feed

  • Pergunta

  • Pessoal, boa tarde!

    Estou com dificuldade em uma query espero que possam me ajudar.

    Tenho a seguinte query (SQL 2005):
    SELECT CRCL.RAZ_SOCIAL, MOVOV.PED_VENDA, /*VEPM.NRO_PED_ORIG, */LEFT(VEPD.C_PROD, 3) AS C_PROD,
           ESTQ.DESCR_1, /*VOLUME.STATUSVOLUME, */ VEPD.QTDE, VOLUME.IDCONTAINER, /*VOLUME.IDVOLUME, */VOLUME.QDEVOLUME, VOLUME.LARGURAVOLUME,
           VOLUME.ALTURAVOLUME, /*VOLUME.NUMDOCUMENTODOCPRODUCAO, AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE,*/
           AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA 
    FROM MOVOV JOIN
         CRCL ON LEFT(CRCL.EMP_FIL,4) = MOVOV.EMPRESA JOIN
         VEPM ON LEFT(VEPM.EMP_FIL,4) = MOVOV.EMPRESA AND VEPM.NUMERO = MOVOV.PED_VENDA JOIN
         VEPD ON LEFT(VEPD.EMP_FIL,4) = MOVOV.EMPRESA AND VEPD.NUMERO = MOVOV.PED_VENDA JOIN
         ESTQ ON LEFT(ESTQ.EMP_FIL,4) = MOVOV.EMPRESA AND ESTQ.C_PROD = VEPD.C_PROD JOIN
         VOLUME ON MOVOV.EMPRESA = VOLUME.CODIGOEMPRESA AND VOLUME.NUMDOCUMENTODOCPRODUCAO = MOVOV.NR_OP JOIN
         AUTOLOGDB.DBO.GRADEITEM ON AUTOLOGDB.DBO.GRADEITEM.CODIGOEMPRESA = VOLUME.CODIGOEMPRESA AND AUTOLOGDB.DBO.GRADEITEM.NUMDOCUMENTO = VOLUME.NUMDOCUMENTODOCPRODUCAO JOIN
         AUTOLOGDB.DBO.CAMPANHAGRADE ON AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROGRADE = AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE AND AUTOLOGDB.DBO.CAMPANHAGRADE.CODIGOEMPRESA = VOLUME.CODIGOEMPRESA
    WHERE (VEPD.ESTAB = ESTQ.ESTAB) AND (VEPD.DEPOSITO = ESTQ.DEPOSITO) AND (MOVOV.LINHA_PED = VEPD.SEQUENCIA)
           AND (VEPD.CLIENTE = CRCL.CLIENTE) AND (MOVOV.EMPRESA = '3188') AND (VOLUME.IDCONTAINER IS NOT NULL)
           AND (VOLUME.IDCONTAINER <> 990000000) AND (MOVOV.PED_VENDA = 37129)
    GROUP BY CRCL.RAZ_SOCIAL, MOVOV.PED_VENDA, VEPM.NRO_PED_ORIG, VEPD.C_PROD, 
           ESTQ.DESCR_1, VOLUME.STATUSVOLUME, VEPD.QTDE, VOLUME.IDCONTAINER, VOLUME.IDVOLUME, VOLUME.QDEVOLUME,         VOLUME.LARGURAVOLUME,
           VOLUME.ALTURAVOLUME, VOLUME.NUMDOCUMENTODOCPRODUCAO, AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE,
           AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA
    ORDER BY CRCL.RAZ_SOCIAL, MOVOV.PED_VENDA, VOLUME.IDCONTAINER


    Que me retorna o seguinte:

    PED_VENDA C_PROD DESCR_1                           QTDE          IDCONTAINER QDEVOLUME LARGURAVOLUME  ALTURAVOLUME   NUMEROCAMPANHA
    -------          ----        -------------------------------  ------------    ----------        -----------      --------------          --------------        --------------
    37129          013        TERMO DIR300/GL10/RS50  30.000000   990132900      30.000         60.000                  500.000              29447
    37129          013        TERMO DIR300/GL10/RS50  470.000000 990132900      47.000         94.000                  500.000              29447
    37129          013        TERMO DIR300/GL10/RS50  470.000000 990132900      47.000         94.000                  500.000              29447
    37129          013        TERMO DIR300/GL10/RS50  470.000000 990132900      47.000         94.000                  500.000              29447
    37129          013        TERMO DIR300/GL10/RS50  470.000000 990132900      47.000         94.000                  500.000              29447
    37129          013        TERMO DIR300/GL10/RS50  470.000000 990132900      47.000         94.000                  500.000              29447
    37129          013        TERMO DIR300/GL10/RS50  470.000000 990132900      47.000         94.000                  500.000              29447
    37129          013        TERMO DIR300/GL10/RS50  470.000000 990132900      47.000         94.000                  500.000              29447
    37129          013        TERMO DIR300/GL10/RS50  470.000000 990132900      47.000         94.000                  500.000              29447
    37129          013        TERMO DIR300/GL10/RS50  470.000000 990132900      47.000         94.000                  500.000              29447
    37129          013        TERMO DIR300/GL10/RS50  470.000000 990132900      47.000         94.000                  500.000              29447

    Gostaria de obter o seguinte resultado:

    PED_VENDA   C_PROD   DESCR_1                              IDCONTAINER   QTDE   LARGURAVOLUME  ALTURAVOLUME   NUMEROCAMPANHA  QTDETOTAL
    -----------       ------        -------------------------            -----------           ----     -----------              --------------        --------------              ---------
    37129            013          TERMO DIR300/GL10/RS50    990132900          1        60.000                  500.000              29447                       500
    37129            013          TERMO DIR300/GL10/RS50    990132900          10      94.000                  500.000              29447                       500


    Eu preciso agrupar por pedido de venda, seguido de IDContainer. Nesse caso acima eu tenho 11 produtos de larguras e alturas diferentes. Preciso que seja totalizado em uma única linha a quantidade total de cada produto (QTDE) por largura x altura, no caso 1 produto com a largura de 60 x 500 de altura e 10 produtos com a largura de 94 x 500 altura. O campo quantidade total tem que trazer a soma do campo QTDE do primeiro resultado (30+470=500).

    Eu estou tentando fazer mas ainda não tive muito sucesso, se alguém tiver alguma idéia pra me passar agradeço muito.

    Obrigada.

    Êmili.
    quinta-feira, 29 de outubro de 2009 14:52

Respostas

  • Segue novo script onde comentei algumas linhas no group by, trazendo apenas os dado q suponho eu vc deseja vizualizar.

    SELECT
        CRCL.RAZ_SOCIAL,
        MOVOV.PED_VENDA,
        LEFT(VEPD.C_PROD, 3)    AS C_PROD,
        ESTQ.DESCR_1                  ,
        VOLUME.IDCONTAINER,
        COUNT(VEPD.QTDE) AS QDEVOLUME,
        VOLUME.LARGURAVOLUME                ,
        VOLUME.ALTURAVOLUME                 ,
        AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA,
        SUM(SUM(VOLUME.QDEVOLUME)) OVER (PARTITION BY MOVOV.PED_VENDA,VOLUME.IDCONTAINER) AS QTDETOTAL
    FROM
         MOVOV
    JOIN CRCL                        ON LEFT(CRCL.EMP_FIL,4)                    = MOVOV.EMPRESA
    JOIN VEPM                        ON LEFT(VEPM.EMP_FIL,4)                    = MOVOV.EMPRESA AND VEPM.NUMERO = MOVOV.PED_VENDA
    JOIN VEPD                        ON LEFT(VEPD.EMP_FIL,4)                    = MOVOV.EMPRESA AND VEPD.NUMERO = MOVOV.PED_VENDA
    JOIN ESTQ                        ON LEFT(ESTQ.EMP_FIL,4)                    = MOVOV.EMPRESA AND ESTQ.C_PROD = VEPD.C_PROD
    JOIN VOLUME                      ON MOVOV.EMPRESA                           = VOLUME.CODIGOEMPRESA AND VOLUME.NUMDOCUMENTODOCPRODUCAO = MOVOV.NR_OP
    JOIN AUTOLOGDB.DBO.GRADEITEM     ON AUTOLOGDB.DBO.GRADEITEM.CODIGOEMPRESA   = VOLUME.CODIGOEMPRESA AND AUTOLOGDB.DBO.GRADEITEM.NUMDOCUMENTO = VOLUME.NUMDOCUMENTODOCPRODUCAO
    JOIN AUTOLOGDB.DBO.CAMPANHAGRADE ON AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROGRADE = AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE AND AUTOLOGDB.DBO.CAMPANHAGRADE.CODIGOEMPRESA = VOLUME.CODIGOEMPRESA
    WHERE 
             (VEPD.ESTAB      = ESTQ.ESTAB)
         AND (VEPD.DEPOSITO   = ESTQ.DEPOSITO)
         AND (MOVOV.LINHA_PED = VEPD.SEQUENCIA)
         AND (VEPD.CLIENTE    = CRCL.CLIENTE)
         AND (MOVOV.EMPRESA   = '3188')
         AND (VOLUME.IDCONTAINER IS NOT NULL)
         AND (VOLUME.IDCONTAINER <> 990000000)
         AND (MOVOV.PED_VENDA  = 37129)
    GROUP BY
             CRCL.RAZ_SOCIAL                    ,
             MOVOV.PED_VENDA                    ,
             VEPD.C_PROD                        ,
             ESTQ.DESCR_1                       ,
    --         VEPM.NRO_PED_ORIG                  ,
    --         VOLUME.STATUSVOLUME                ,
    --         VEPD.QTDE                          ,
             VOLUME.IDCONTAINER                 ,
    --         VOLUME.IDVOLUME                    ,
             VOLUME.LARGURAVOLUME               ,
             VOLUME.ALTURAVOLUME                ,
    --         VOLUME.NUMDOCUMENTODOCPRODUCAO     ,
    --         AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE,
             AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA        
    ORDER BY
             CRCL.RAZ_SOCIAL,
             MOVOV.PED_VENDA,
             VOLUME.IDCONTAINER

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    quinta-feira, 29 de outubro de 2009 20:34

Todas as Respostas

  • Emili

    teste este script.

    SELECT CRCL.RAZ_SOCIAL, MOVOV.PED_VENDA, /*VEPM.NRO_PED_ORIG, */LEFT(VEPD.C_PROD, 3) AS C_PROD,
           ESTQ.DESCR_1, /*VOLUME.STATUSVOLUME, */ VEPD.QTDE, VOLUME.IDCONTAINER, /*VOLUME.IDVOLUME, */count(VOLUME.QDEVOLUME) as QDEVOLUME, VOLUME.LARGURAVOLUME,
           VOLUME.ALTURAVOLUME, /*VOLUME.NUMDOCUMENTODOCPRODUCAO, AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE,*/
           AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA,
           sum(VOLUME.QDEVOLUME) as QTDETOTAL
    FROM MOVOV JOIN
         CRCL ON LEFT(CRCL.EMP_FIL,4) = MOVOV.EMPRESA JOIN
         VEPM ON LEFT(VEPM.EMP_FIL,4) = MOVOV.EMPRESA AND VEPM.NUMERO = MOVOV.PED_VENDA JOIN
         VEPD ON LEFT(VEPD.EMP_FIL,4) = MOVOV.EMPRESA AND VEPD.NUMERO = MOVOV.PED_VENDA JOIN
         ESTQ ON LEFT(ESTQ.EMP_FIL,4) = MOVOV.EMPRESA AND ESTQ.C_PROD = VEPD.C_PROD JOIN
         VOLUME ON MOVOV.EMPRESA = VOLUME.CODIGOEMPRESA AND VOLUME.NUMDOCUMENTODOCPRODUCAO = MOVOV.NR_OP JOIN
         AUTOLOGDB.DBO.GRADEITEM ON AUTOLOGDB.DBO.GRADEITEM.CODIGOEMPRESA = VOLUME.CODIGOEMPRESA AND AUTOLOGDB.DBO.GRADEITEM.NUMDOCUMENTO = VOLUME.NUMDOCUMENTODOCPRODUCAO JOIN
         AUTOLOGDB.DBO.CAMPANHAGRADE ON AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROGRADE = AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE AND AUTOLOGDB.DBO.CAMPANHAGRADE.CODIGOEMPRESA = VOLUME.CODIGOEMPRESA
    WHERE (VEPD.ESTAB = ESTQ.ESTAB) AND (VEPD.DEPOSITO = ESTQ.DEPOSITO) AND (MOVOV.LINHA_PED = VEPD.SEQUENCIA)
           AND (VEPD.CLIENTE = CRCL.CLIENTE) AND (MOVOV.EMPRESA = '3188') AND (VOLUME.IDCONTAINER IS NOT NULL)
           AND (VOLUME.IDCONTAINER <> 990000000) AND (MOVOV.PED_VENDA = 37129)
    GROUP BY CRCL.RAZ_SOCIAL, MOVOV.PED_VENDA, VEPM.NRO_PED_ORIG, VEPD.C_PROD, 
           ESTQ.DESCR_1, VOLUME.STATUSVOLUME, VEPD.QTDE, VOLUME.IDCONTAINER, VOLUME.IDVOLUME, VOLUME.LARGURAVOLUME,
           VOLUME.ALTURAVOLUME, VOLUME.NUMDOCUMENTODOCPRODUCAO, AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE,
           AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA
    ORDER BY CRCL.RAZ_SOCIAL, MOVOV.PED_VENDA, VOLUME.IDCONTAINER


    att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    quinta-feira, 29 de outubro de 2009 15:11
  • Boa tarde Emili segue a minha sugestão similar a do Marcelo, porém alterando apenas a coluna sum.

    SELECT
        CRCL.RAZ_SOCIAL,
        MOVOV.PED_VENDA,
        LEFT(VEPD.C_PROD, 3)    AS C_PROD,
        ESTQ.DESCR_1                  ,
        VOLUME.IDCONTAINER,
        COUNT(VEPD.QTDE) AS QDEVOLUME,
        VOLUME.LARGURAVOLUME                ,
        VOLUME.ALTURAVOLUME                 ,
        AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA,
        SUM(SUM(VOLUME.QDEVOLUME)) OVER (PARTITION BY MOVOV.PED_VENDA,VOLUME.IDCONTAINER) AS QTDETOTAL
    FROM
         MOVOV
    JOIN CRCL                        ON LEFT(CRCL.EMP_FIL,4)                    = MOVOV.EMPRESA
    JOIN VEPM                        ON LEFT(VEPM.EMP_FIL,4)                    = MOVOV.EMPRESA AND VEPM.NUMERO = MOVOV.PED_VENDA
    JOIN VEPD                        ON LEFT(VEPD.EMP_FIL,4)                    = MOVOV.EMPRESA AND VEPD.NUMERO = MOVOV.PED_VENDA
    JOIN ESTQ                        ON LEFT(ESTQ.EMP_FIL,4)                    = MOVOV.EMPRESA AND ESTQ.C_PROD = VEPD.C_PROD
    JOIN VOLUME                      ON MOVOV.EMPRESA                           = VOLUME.CODIGOEMPRESA AND VOLUME.NUMDOCUMENTODOCPRODUCAO = MOVOV.NR_OP
    JOIN AUTOLOGDB.DBO.GRADEITEM     ON AUTOLOGDB.DBO.GRADEITEM.CODIGOEMPRESA   = VOLUME.CODIGOEMPRESA AND AUTOLOGDB.DBO.GRADEITEM.NUMDOCUMENTO = VOLUME.NUMDOCUMENTODOCPRODUCAO
    JOIN AUTOLOGDB.DBO.CAMPANHAGRADE ON AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROGRADE = AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE AND AUTOLOGDB.DBO.CAMPANHAGRADE.CODIGOEMPRESA = VOLUME.CODIGOEMPRESA
    WHERE 
             (VEPD.ESTAB      = ESTQ.ESTAB)
         AND (VEPD.DEPOSITO   = ESTQ.DEPOSITO)
         AND (MOVOV.LINHA_PED = VEPD.SEQUENCIA)
         AND (VEPD.CLIENTE    = CRCL.CLIENTE)
         AND (MOVOV.EMPRESA   = '3188')
         AND (VOLUME.IDCONTAINER IS NOT NULL)
         AND (VOLUME.IDCONTAINER <> 990000000)
         AND (MOVOV.PED_VENDA  = 37129)
    GROUP BY
             CRCL.RAZ_SOCIAL                    ,
             MOVOV.PED_VENDA                    ,
             VEPM.NRO_PED_ORIG                  ,
             VEPD.C_PROD                        ,
             ESTQ.DESCR_1                       ,
             VOLUME.STATUSVOLUME                ,
             VEPD.QTDE                          ,
             VOLUME.IDCONTAINER                 ,
             VOLUME.IDVOLUME                    ,
             VOLUME.LARGURAVOLUME               ,
             VOLUME.ALTURAVOLUME                ,
             VOLUME.NUMDOCUMENTODOCPRODUCAO     ,
             AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE,
             AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA
    ORDER BY
             CRCL.RAZ_SOCIAL,
             MOVOV.PED_VENDA,
             VOLUME.IDCONTAINER
    
    
    
    -- SEGUE DADOS P/ TESTES 
    USE TEMPDB
    GO
    
    CREATE TABLE #tmp 
    (
       PED_VENDA        INT  
      ,C_PROD          CHAR(3)     
      ,DESCR_1         VARCHAR(40)             
      ,QTDE            NUMERIC(10,6) 
      ,IDCONTAINER     INT  
      ,QDEVOLUME       NUMERIC(10,3)    
      ,LARGURAVOLUME   NUMERIC(10,3)      
      ,ALTURAVOLUME    NUMERIC(10,3)           
      ,NUMEROCAMPANHA  INT
    )
    
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50',  30.000000, 990132900, 30.000, 60.000, 500.000, 29447 
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50', 470.000000, 990132900, 47.000, 94.000, 500.000, 29447 
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50', 470.000000, 990132900, 47.000, 94.000, 500.000, 29447 
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50', 470.000000, 990132900, 47.000, 94.000, 500.000, 29447 
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50', 470.000000, 990132900, 47.000, 94.000, 500.000, 29447 
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50', 470.000000, 990132900, 47.000, 94.000, 500.000, 29447 
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50', 470.000000, 990132900, 47.000, 94.000, 500.000, 29447 
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50', 470.000000, 990132900, 47.000, 94.000, 500.000, 29447 
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50', 470.000000, 990132900, 47.000, 94.000, 500.000, 29447 
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50', 470.000000, 990132900, 47.000, 94.000, 500.000, 29447 
    INSERT #tmp SELECT 37129, '013', 'TERMO DIR300/GL10/RS50', 470.000000, 990132900, 47.000, 94.000, 500.000, 29447 
    
    SELECT  
    	 PED_VENDA   
    	,C_PROD         
    	,DESCR_1                
    	,IDCONTAINER   
    	,COUNT(QTDE) AS QTDE
    	,LARGURAVOLUME
    	,ALTURAVOLUME           
    	,NUMEROCAMPANHA
    	,QDEVOLUME    
    	,SUM(QDEVOLUME) AS QTDETOTAL
    	,SUM(SUM(QDEVOLUME)) OVER (PARTITION BY PED_VENDA,IDCONTAINER) AS QTDETOTAL_NOVO
    FROM 
    	#tmp
    GROUP BY 
    	PED_VENDA   
    	,C_PROD         
    	,DESCR_1                
    	,IDCONTAINER   
    	,QDEVOLUME 
    	,LARGURAVOLUME    
    	,ALTURAVOLUME           
    	,NUMEROCAMPANHA
    
    
    

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    quinta-feira, 29 de outubro de 2009 16:58
  • Marcelo, boa tarde!

    Executei seu script e o resultado foi o seguinte:

    PED_VENDA  C_PROD DESCR_1                           QTDE         IDCONTAINER QDEVOLUME  LARGURAVOLUME   ALTURAVOLUME  NUMEROCAMPANHA  QTDETOTAL
    ---------        ------      -----------------------            ----------     ------------       ----------       -------------             -------------        --------------- ---------
    37129           013        TERMO DIR300/GL10/RS50  30.000000   990132900     1                  60.000                    500.000             29447           30.000
    37129           013        TERMO DIR300/GL10/RS50  470.000000 990132900     1                  94.000                    500.000             29447           47.000
    37129           013        TERMO DIR300/GL10/RS50  470.000000 990132900     1                  94.000                    500.000             29447           47.000
    37129           013        TERMO DIR300/GL10/RS50  470.000000 990132900     1                  94.000                    500.000             29447           47.000
    37129           013        TERMO DIR300/GL10/RS50  470.000000 990132900     1                  94.000                    500.000             29447           47.000
    37129           013        TERMO DIR300/GL10/RS50  470.000000 990132900     1                  94.000                    500.000             29447           47.000
    37129           013        TERMO DIR300/GL10/RS50  470.000000 990132900     1                  94.000                    500.000             29447           47.000
    37129           013        TERMO DIR300/GL10/RS50  470.000000 990132900     1                  94.000                    500.000             29447           47.000
    37129           013        TERMO DIR300/GL10/RS50  470.000000 990132900     1                  94.000                    500.000             29447           47.000
    37129           013        TERMO DIR300/GL10/RS50  470.000000 990132900     1                  94.000                    500.000             29447           47.000
    37129           013        TERMO DIR300/GL10/RS50  470.000000 990132900     1                  94.000                    500.000             29447           47.000

    Ainda não é bem o que eu preciso, pois preciso que o resultado saia em uma única linha quando a largura x altura for a mesma.

    Valeu.

    Êmili.
    quinta-feira, 29 de outubro de 2009 17:16
  • Segue script alterado.

    SELECT CRCL.RAZ_SOCIAL, MOVOV.PED_VENDA, /*VEPM.NRO_PED_ORIG, */LEFT(VEPD.C_PROD, 3) AS C_PROD,
           ESTQ.DESCR_1, /*VOLUME.STATUSVOLUME, */ count(VEPD.QTDE) as qtde, VOLUME.IDCONTAINER, /*VOLUME.IDVOLUME, */count(VOLUME.QDEVOLUME) as QDEVOLUME, VOLUME.LARGURAVOLUME,
           VOLUME.ALTURAVOLUME, /*VOLUME.NUMDOCUMENTODOCPRODUCAO, AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE,*/
           AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA,
           sum(VOLUME.QDEVOLUME) as QTDETOTAL
    FROM MOVOV JOIN
         CRCL ON LEFT(CRCL.EMP_FIL,4) = MOVOV.EMPRESA JOIN
         VEPM ON LEFT(VEPM.EMP_FIL,4) = MOVOV.EMPRESA AND VEPM.NUMERO = MOVOV.PED_VENDA JOIN
         VEPD ON LEFT(VEPD.EMP_FIL,4) = MOVOV.EMPRESA AND VEPD.NUMERO = MOVOV.PED_VENDA JOIN
         ESTQ ON LEFT(ESTQ.EMP_FIL,4) = MOVOV.EMPRESA AND ESTQ.C_PROD = VEPD.C_PROD JOIN
         VOLUME ON MOVOV.EMPRESA = VOLUME.CODIGOEMPRESA AND VOLUME.NUMDOCUMENTODOCPRODUCAO = MOVOV.NR_OP JOIN
         AUTOLOGDB.DBO.GRADEITEM ON AUTOLOGDB.DBO.GRADEITEM.CODIGOEMPRESA = VOLUME.CODIGOEMPRESA AND AUTOLOGDB.DBO.GRADEITEM.NUMDOCUMENTO = VOLUME.NUMDOCUMENTODOCPRODUCAO JOIN
         AUTOLOGDB.DBO.CAMPANHAGRADE ON AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROGRADE = AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE AND AUTOLOGDB.DBO.CAMPANHAGRADE.CODIGOEMPRESA = VOLUME.CODIGOEMPRESA
    WHERE (VEPD.ESTAB = ESTQ.ESTAB) AND (VEPD.DEPOSITO = ESTQ.DEPOSITO) AND (MOVOV.LINHA_PED = VEPD.SEQUENCIA)
           AND (VEPD.CLIENTE = CRCL.CLIENTE) AND (MOVOV.EMPRESA = '3188') AND (VOLUME.IDCONTAINER IS NOT NULL)
           AND (VOLUME.IDCONTAINER <> 990000000) AND (MOVOV.PED_VENDA = 37129)
    GROUP BY CRCL.RAZ_SOCIAL, MOVOV.PED_VENDA, VEPM.NRO_PED_ORIG, VEPD.C_PROD, 
           ESTQ.DESCR_1, VOLUME.STATUSVOLUME, VOLUME.IDCONTAINER, VOLUME.IDVOLUME, VOLUME.LARGURAVOLUME,
           VOLUME.ALTURAVOLUME, VOLUME.NUMDOCUMENTODOCPRODUCAO, AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE,
           AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA
    ORDER BY CRCL.RAZ_SOCIAL, MOVOV.PED_VENDA, VOLUME.IDCONTAINER


    Att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    quinta-feira, 29 de outubro de 2009 17:39
  • Leonardo, boa tarde!

    A query que você me passou resolveu o problema da coluna quantidade total, trouxe certinho o valor que eu precisava, porém ainda preciso que seja totalizado em uma única linha os valores quando altura x largura forem iguais, no caso 94 x 500.

    O resultado da sua query está retornando assim:

    PED_VENDA   C_PROD  DESCR_1                              IDCONTAINER  QDEVOLUME   LARGURAVOLUME  ALTURAVOLUME  NUMEROCAMPANHA  QTDETOTAL
    -----------       ------       -------------------------            ------------          -----------      --------------          -------------         --------------- ----------
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  60.000                  500.000              29447           500.000
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  94.000                  500.000              29447           500.000
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  94.000                  500.000              29447           500.000
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  94.000                  500.000              29447           500.000
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  94.000                  500.000              29447           500.000
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  94.000                  500.000              29447           500.000
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  94.000                  500.000              29447           500.000
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  94.000                  500.000              29447           500.000
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  94.000                  500.000              29447           500.000
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  94.000                  500.000              29447           500.000
    37129            013         TERMO DIR300/GL10/RS50    990132900          1                  94.000                  500.000              29447           500.000

    Eu tenho 1 registro em que a largura do produto é 60 x 500 altura, então essa linha está correta.

    Eu tenho 10 registros em que a largura do produto é 94 x 500 altura, então preciso que me retorne uma linha com essa informação:

    QDEVOLUME     LARGURAVOLUME  ALTURAVOLUME   QTETOTAL
    10                    94.000                 500.000               500.000

    Preciso que toda vez que houver um produto com a mesma largura x altura seja somado e o resultado venha na coluna QDEVOLUME (por pedido de venda).

    Obrigada.

    Êmili.



    quinta-feira, 29 de outubro de 2009 19:48
  • Marcelo, boa tarde!

    Por enquanto a solução que o Leonardo passou está mais próxima do que eu preciso porque está totalizando certinho na coluna QTDETOTAL.

    Obrigada.

    Êmili.
    quinta-feira, 29 de outubro de 2009 19:49
  • Segue novo script onde comentei algumas linhas no group by, trazendo apenas os dado q suponho eu vc deseja vizualizar.

    SELECT
        CRCL.RAZ_SOCIAL,
        MOVOV.PED_VENDA,
        LEFT(VEPD.C_PROD, 3)    AS C_PROD,
        ESTQ.DESCR_1                  ,
        VOLUME.IDCONTAINER,
        COUNT(VEPD.QTDE) AS QDEVOLUME,
        VOLUME.LARGURAVOLUME                ,
        VOLUME.ALTURAVOLUME                 ,
        AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA,
        SUM(SUM(VOLUME.QDEVOLUME)) OVER (PARTITION BY MOVOV.PED_VENDA,VOLUME.IDCONTAINER) AS QTDETOTAL
    FROM
         MOVOV
    JOIN CRCL                        ON LEFT(CRCL.EMP_FIL,4)                    = MOVOV.EMPRESA
    JOIN VEPM                        ON LEFT(VEPM.EMP_FIL,4)                    = MOVOV.EMPRESA AND VEPM.NUMERO = MOVOV.PED_VENDA
    JOIN VEPD                        ON LEFT(VEPD.EMP_FIL,4)                    = MOVOV.EMPRESA AND VEPD.NUMERO = MOVOV.PED_VENDA
    JOIN ESTQ                        ON LEFT(ESTQ.EMP_FIL,4)                    = MOVOV.EMPRESA AND ESTQ.C_PROD = VEPD.C_PROD
    JOIN VOLUME                      ON MOVOV.EMPRESA                           = VOLUME.CODIGOEMPRESA AND VOLUME.NUMDOCUMENTODOCPRODUCAO = MOVOV.NR_OP
    JOIN AUTOLOGDB.DBO.GRADEITEM     ON AUTOLOGDB.DBO.GRADEITEM.CODIGOEMPRESA   = VOLUME.CODIGOEMPRESA AND AUTOLOGDB.DBO.GRADEITEM.NUMDOCUMENTO = VOLUME.NUMDOCUMENTODOCPRODUCAO
    JOIN AUTOLOGDB.DBO.CAMPANHAGRADE ON AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROGRADE = AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE AND AUTOLOGDB.DBO.CAMPANHAGRADE.CODIGOEMPRESA = VOLUME.CODIGOEMPRESA
    WHERE 
             (VEPD.ESTAB      = ESTQ.ESTAB)
         AND (VEPD.DEPOSITO   = ESTQ.DEPOSITO)
         AND (MOVOV.LINHA_PED = VEPD.SEQUENCIA)
         AND (VEPD.CLIENTE    = CRCL.CLIENTE)
         AND (MOVOV.EMPRESA   = '3188')
         AND (VOLUME.IDCONTAINER IS NOT NULL)
         AND (VOLUME.IDCONTAINER <> 990000000)
         AND (MOVOV.PED_VENDA  = 37129)
    GROUP BY
             CRCL.RAZ_SOCIAL                    ,
             MOVOV.PED_VENDA                    ,
             VEPD.C_PROD                        ,
             ESTQ.DESCR_1                       ,
    --         VEPM.NRO_PED_ORIG                  ,
    --         VOLUME.STATUSVOLUME                ,
    --         VEPD.QTDE                          ,
             VOLUME.IDCONTAINER                 ,
    --         VOLUME.IDVOLUME                    ,
             VOLUME.LARGURAVOLUME               ,
             VOLUME.ALTURAVOLUME                ,
    --         VOLUME.NUMDOCUMENTODOCPRODUCAO     ,
    --         AUTOLOGDB.DBO.GRADEITEM.NUMEROGRADE,
             AUTOLOGDB.DBO.CAMPANHAGRADE.NUMEROCAMPANHA        
    ORDER BY
             CRCL.RAZ_SOCIAL,
             MOVOV.PED_VENDA,
             VOLUME.IDCONTAINER

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    quinta-feira, 29 de outubro de 2009 20:34
  • Leonardo, bom dia!

    Muito obrigada era exatamente o que eu precisava.

    Êmili.
    sexta-feira, 30 de outubro de 2009 10:04
  • Emili, Bom dia e obrigado pelo retorno.
    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    sexta-feira, 30 de outubro de 2009 10:26