none
Agrupamento e Soma de valores utilizando Case RRS feed

  • Pergunta

  • Boa tarde!

    Estou com dificuldade em realizar uma rotina para me retornar os valores agrupados utilizando Case entre duas tabelas

    A principio segue minha consulta, mas se tiverem alguma alternativa melhor, sera muito bem vinda.

    desde ja agradeço a ajuda de todos.

    SELECT LOC.NOMEFANTASIA, VEI.PLACAVEICULO, CON.NOMECONTA, VEI.PLACAVEICULO, 
    (CASE WHEN PNE.CAMPO2 = 'TROC_CONSERT_PNEU'   THEN SUM(PNE.TOTALSERVIVO) ELSE 0 END) AS GASTCOM_PNEU,
    (CASE WHEN PNE.CAMPO2 = 'MANUTENCAO_ELETRICA' THEN SUM(PNE.TOTALSERVIVO) ELSE 0 END) AS GASTCOM_ELETRICA,
    (CASE WHEN PNE.CAMPO2 = 'MANUTENCAO_MECANICA' THEN SUM(PNE.TOTALSERVIVO) ELSE 0 END) AS GASTCOM_MECANICA,
    (CASE WHEN PNE.CAMPO2 = 'MANUTENCAO_PINTURA'  THEN SUM(PNE.TOTALSERVIVO) ELSE 0 END) AS GASTCOM_PINTURA
    FROM tbl_Frota_CadVeiculo VEI
    LEFT JOIN  tbl_Frota_ServicosPNEUS PNE ON(VEI.CODIGO = PNE.CAMPO1)
    LEFT JOIN TBL_LOCALIDADES          LOC ON(LOC.CODIGO = VEI.CODBASE)
    LEFT JOIN TBL_CONTACG              CON ON(CON.CODIGOCONTA = VEI.CODPROJETO)
    GROUP BY LOC.NOMEFANTASIA, CON.NOMECONTA, VEI.PLACAVEICULO , PNE.CAMPO2
    ORDER BY VEI.PLACAVEICULO , PNE.CAMPO2


    Link da imagem da consulta e resultado
    • Editado Maseroli segunda-feira, 17 de março de 2014 16:44
    segunda-feira, 17 de março de 2014 16:36

Respostas

Todas as Respostas

  • Maseroli,

    Tente adaptar seu script para o modelo abaixo:

    SELECT NOMEFANTASIA, PLACAVEICULO, NOMECONTA, 
    SUM(GASTCOM_PNEU) AS PNEU, 
    SUM(GASTCOM_ELETRICA) AS ELETRICA, 
    SUM(GASTCOM_MECANICA) AS MECANICA, 
    SUM(GASTCOM_PINTURA) AS PINTURA
    
    FROM (
    SELECT LOC.NOMEFANTASIA, VEI.PLACAVEICULO, CON.NOMECONTA, 
    (CASE WHEN PNE.CAMPO2 = 'TROC_CONSERT_PNEU'   THEN SUM(PNE.TOTALSERVIVO) ELSE 0 END) AS GASTCOM_PNEU,
    (CASE WHEN PNE.CAMPO2 = 'MANUTENCAO_ELETRICA' THEN SUM(PNE.TOTALSERVIVO) ELSE 0 END) AS GASTCOM_ELETRICA,
    (CASE WHEN PNE.CAMPO2 = 'MANUTENCAO_MECANICA' THEN SUM(PNE.TOTALSERVIVO) ELSE 0 END) AS GASTCOM_MECANICA,
    (CASE WHEN PNE.CAMPO2 = 'MANUTENCAO_PINTURA'  THEN SUM(PNE.TOTALSERVIVO) ELSE 0 END) AS GASTCOM_PINTURA
    FROM tbl_Frota_CadVeiculo VEI
    LEFT JOIN  tbl_Frota_ServicosPNEUS PNE ON(VEI.CODIGO = PNE.CAMPO1)
    LEFT JOIN TBL_LOCALIDADES          LOC ON(LOC.CODIGO = VEI.CODBASE)
    LEFT JOIN TBL_CONTACG              CON ON(CON.CODIGOCONTA = VEI.CODPROJETO)
    GROUP BY LOC.NOMEFANTASIA, CON.NOMECONTA, VEI.PLACAVEICULO , PNE.CAMPO2
    ORDER BY VEI.PLACAVEICULO , PNE.CAMPO2
    ) AS TBL
    GROUP BY NOMEFANTASIA, PLACAVEICULO, NOMECONTA

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    segunda-feira, 17 de março de 2014 17:12
    Moderador
  • Boa tarde,

    Maseroli, experimente dessa forma:

    SELECT 
        LOC.NOMEFANTASIA, 
        VEI.PLACAVEICULO, 
        CON.NOMECONTA 
        SUM(CASE WHEN PNE.CAMPO2 = 'TROC_CONSERT_PNEU' THEN PNE.TOTALSERVIVO ELSE 0 END) AS GASTCOM_PNEU,
        SUM(CASE WHEN PNE.CAMPO2 = 'MANUTENCAO_ELETRICA' THEN PNE.TOTALSERVIVO ELSE 0 END) AS GASTCOM_ELETRICA,
        SUM(CASE WHEN PNE.CAMPO2 = 'MANUTENCAO_MECANICA' THEN PNE.TOTALSERVIVO ELSE 0 END) AS GASTCOM_MECANICA,
        SUM(CASE WHEN PNE.CAMPO2 = 'MANUTENCAO_PINTURA' THEN PNE.TOTALSERVIVO ELSE 0 END) AS GASTCOM_PINTURA
    FROM tbl_Frota_CadVeiculo VEI
    LEFT JOIN  tbl_Frota_ServicosPNEUS PNE ON(VEI.CODIGO = PNE.CAMPO1)
    LEFT JOIN TBL_LOCALIDADES          LOC ON(LOC.CODIGO = VEI.CODBASE)
    LEFT JOIN TBL_CONTACG              CON ON(CON.CODIGOCONTA = VEI.CODPROJETO)
    GROUP BY 
        LOC.NOMEFANTASIA, 
        CON.NOMECONTA, 
        VEI.PLACAVEICULO
    ORDER BY 
        VEI.PLACAVEICULO

    Espero que ajude.


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

    segunda-feira, 17 de março de 2014 17:21
  • gapimex

    Muito Obrigado pela ajuda, sua interação funcionou certinho

    segue resultado abaixo


    resultado da consulta

    • Marcado como Resposta Maseroli segunda-feira, 17 de março de 2014 18:14
    segunda-feira, 17 de março de 2014 18:14
  • Durva, 

    Não deu certo, mesmo assim, muito obrigado por tentar me ajudar.


    segunda-feira, 17 de março de 2014 18:15
  • gapimex

    Muito Obrigado pela ajuda, sua interação funcionou certinho

    segue resultado abaixo


    resultado da consulta

    Maseroli,

    Por favor, marque também a resposta do gapimex para premiar à ajuda que ele fez para você.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 17 de março de 2014 18:18
    Moderador