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:
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:
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
SELECT Nome, Fabricante, Quantidade, VlUnitario,
CASE
WHEN VlUnitario < 1000.00 THEN 'Menor que 1000'
ELSE 'Maior que 1000'
END AS VlUnitario,
Tipo
FROM Produtos