none
Resumo pode Linha RRS feed

  • Discussão Geral

  • Prezados boa tarde!

    a SQL Abaixo me retorna as informaçoes corretas, porem eu preciso que gera uma resumo por equipamento. vejam a resultado.

    SQL


    SELECT 
    T.CODCCUSTO AS 'OBRA',
    TI.IDOBJOFICINA AS 'OBJETO',
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 1  THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'JAN',        
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 2  THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'FEV',        
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 3  THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'MAR',         
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 4  THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'ABR',         
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 5  THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'MAIO',         
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 6  THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'JUN',        
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 7  THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'JUL' ,        
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 8  THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'AGO',
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 9  THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'SET' ,
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 10 THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'OUT',
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 11 THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'NOV',
     COALESCE(CONVERT(VARCHAR,SUM(CASE  WHEN MONTH(T.DATAEMISSAO) = 12 THEN TI.QUANTIDADE * TI.PRECOUNITARIO END),1),'0') AS 'DEZ' ,
    TOTAL_ANO = Sum(Case When (Year(T.DATAEMISSAO) = Year(GetDate()) ) Then (TI.QUANTIDADE * TI.PRECOUNITARIO) End)     

        
     FROM TITMMOV  AS TI
    INNER JOIN TMOV AS T ON T.CODCOLIGADA = TI.CODCOLIGADA AND T.IDMOV = TI.IDMOV

    WHERE T.CODTMV IN ('1.2.01','1.2.11','1.2.12','1.2.09','1.2.18')
    AND  TI.IDOBJOFICINA IS NOT NULL
    AND YEAR(T.DATAEMISSAO) = '2013'
    AND T.CODFILIAL  = '1'

    GROUP BY TI.IDOBJOFICINA,T.CODCCUSTO
    ORDER BY  TI.IDOBJOFICINA,T.CODCCUSTO

    Resultado Resumido

    obra           Equi        JAN      FEV

    01.0002      AC-02    100      10
    01.0002      AC-03    150      10      
    02.0055      AC-03    280      100
    02.0058      AC-03    100      100      

    Resultado esperado

    Resultado Resumido

    obra           Equi        JAN      FEV        total

    01.0002      AC-02    100       10         110

    Total 110 soma os meses

    01.0002       AC-03   150       10         160

    Total 160 soma por obra

    02.0055      AC-03     280      100     380
    02.0058      AC-03     100      100     200

    Total    580

    Meio complicado, mas seria dessa forma.

    quarta-feira, 24 de abril de 2013 19:19

Todas as Respostas

  • Boa tarde,

    Ronnie, não entendi porque no seu exemplo os 160 da obra 01.0002 não foram somados com os 580 das outras obras, sendo que o valor da coluna equi é igual a AC-03 nas 3 linhas. Não seria o caso de somar as 3 linhas?

    Qual versão do SQL Server você está utilizando?


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 24 de abril de 2013 20:42
  • Deleted
    quarta-feira, 24 de abril de 2013 22:15
  • Bom dia!

    Gapimex realmente eu fiz errado o resultado, otima observacao.

    Resultado esperado

    Resultado Resumido

    obra           Equi        JAN      FEV        total

    01.0002      AC-02    100       10         110

    Total 110 soma os meses

    01.0002       AC-03   150       10         160

    02.0055      AC-03     280      100     380
    02.0058      AC-03     100      100     200

    Total    740

    Meu SQL e 2008

    obrigado

    quinta-feira, 25 de abril de 2013 11:49
  • José Bom dia!

    veja o erro que retornou,

    coloquei essa opção


    GROUP BY ROLLUP (TI.IDOBJOFICINA,T.CODCCUSTO)
    ORDER BY
             GROUPING(TI.IDOBJOFICINA), TI.IDOBJOFICINA,
             GROUPING(T.CODCCUSTO), T.CODCCUSTO

    Mensagem 10707, Nvel 15, Estado 1, Linha 34

    The CUBE() and ROLLUP() grouping constructs are not allowed in the current compatibility mode.  They are only allowed in 100 mode or higher.

    quinta-feira, 25 de abril de 2013 11:58
  • Ronnie,

    Sua base deve estar em uma instância com SQL 2005 ou inferior, ou ainda em modo de compatiblidade com o 2005 ou inferior.
    Os comandos ROLLUP e CUBE são features inseridas a partir do SQL 2008. Por isso essa mensagem de erro.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    quinta-feira, 25 de abril de 2013 12:28
  • Deleted
    quinta-feira, 25 de abril de 2013 13:31
  • Prezados realmente nao deu certo por causa do nivel de compatiblidade do meu bando de dados, pois uso o SQL porem por que causa do meu ERP, ele esta parametrizado como 80, agradeço a todos pela ajuda.

    quinta-feira, 25 de abril de 2013 18:26
  • Ronnie,

    Experimente deixar a clausula Group By conforme segue para ver se roda:

    GROUP BY TI.IDOBJOFICINA,T.CODCCUSTO with rollup

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex quinta-feira, 25 de abril de 2013 19:01
    quinta-feira, 25 de abril de 2013 19:01
  • Deleted
    quinta-feira, 25 de abril de 2013 19:32