DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Diferenças entre COMPUTE e GROUP BY e Clásula CASE - Compute By e Case: SQL Server 2008 - Parte 2

Neste artigo veremos as diferenças entre as cláusulas COMPUTE e GROUP BY. Veremos também conceitos e exemplos com a cláusula CASE.

Voltando de onde paramos, tanto para COMPUTE quanto para COMPUTE BY são obtidos dois grupos de resultado para o SELECT, como vemos na tabela abaixo:
 

Grupos de resultado com COMPUTE

Grupos de resultados com COMPUTE BY

Primeiro Resultado: Possui todas as linhas de detalhe com a informação de lista de seleção.

Primeiro Resultado: Possui o grupo de linhas de detalhe com a informação de lista de seleção de cada grupo.

Segundo Resultado: Possui uma linha com os totais das funções agregadas definidas na cláusula COMPUTE.

Segundo Resultado: Possui uma linha com os subtotais das funções agregadas definidas no grupo pela cláusula COMPUTE.

 As diferenças entre COMPUTE e GROUP BY – Na tabela abaixo vemos as principais diferenças entre as cláusulas COMPUTE e GROUP BY:

Características

COMPUTE

GROUP BY

Quantidade de grupos de resultado

Diversos grupos de resultado são produzidos.

Apenas um grupo de resultado é produzido.

Lista de seleção

A lista de seleção pode ter expressões que não sejam funções agregadas e colunas de agrupamento. As funções agregadas não são especificadas na lista de seleção, mas sim na cláusula COMPUTE.

A lista de seleção pode possuir apenas as funções agregadas e colunas de agrupamento.

 Cláusula CASE – Os valores pertencentes a uma coluna podem ser testados por meio da cláusula CASE em conjunto com o comando SELECT. Para exemplificar o uso dessa cláusula, usaremos a tabela Clientes apresentada abaixo:

 Vamos alterar as colunas SexoCliente e Status, de M e F para Masculino e Feminino e, de A e I para Ativo e Inativo. Para que isso aconteça use a seguinte instrução:


  SELECT Nome,
    CASE SexoCliente
         WHEN 'M' THEN 'Masculino'
         ELSE 'Feminino'
     END AS SexoCliente,
    CASE Status
         WHEN 'A' THEN 'Ativo'
         ELSE 'Inativo'
     END AS Status
    FROM Clientes

 Veja o resultado:

 
 Agora vamos usar como exemplo a tabela de Produtos:
 
 

 Vamos usar a cláusula CASE para exibir Menor que 1000 para os produtos com valor unitário inferior a 1000.00, e Maior que 1000 para o oposto. Veja como fazer isso:


  SELECT Nome, Fabricante, Quantidade, VlUnitario,
    CASE
         WHEN VlUnitario < 1000.00 THEN 'Menor que 1000'
         ELSE 'Maior que 1000'
     END AS VlUnitario,
         Tipo
    FROM Produtos


 E o resultado é o seguinte:

 Note que retornei duas vezes a coluna VlUnitario, para demonstrar seu valor normal e seu valor com o uso da cláusula CASE aplicada.

 Fonte de Consulta: Apostila de SQL Server, da Impacta Tecnologia.

 Assim finalizo o artigo. Muito obrigado a todos!

 Um abraço, e até o próximo artigo.

 Wellington Balbo de Camargo

 wellingtonbalbo@gmail.com


Wellington Balbo De Camargo
Tecnólogo em Análise de Sistemas, atua na área de Desenvolvimento .NET com aplicações Web a 2 anos, onde trabalha atualmente com a linguagem C# usando a tecnologia ASP.NET, no desenvolvimento em camadas usando o banco de dados SQL Server. Procura estudar cada vez mais para melhorar os conheciment...
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03