Ir para conteúdo
Fórum Script Brasil
  • 0

CASE - exemplos de uso


jothaz

Pergunta

Exemplo 01

DECLARE  @TMP TABLE (NU_DOC INT, IC_ACEITO CHAR(1))

INSERT INTO @TMP (NU_DOC, IC_ACEITO, VALOR) VALUES (1,'A')
INSERT INTO @TMP (NU_DOC, IC_ACEITO, VALOR) VALUES (2,'C')
INSERT INTO @TMP (NU_DOC, IC_ACEITO, VALOR) VALUES (3,'')

SELECT    NU_DOC, IC_ACEITO, CASE rtrim(ltrim(IC_ACEITO))
                    WHEN 'A' THEN 'Aceito' 
                    WHEN 'C' THEN 'Cancelado' 
                    ELSE 'Não avaliado'
                    END
FROM    @TMP
Exemplo 02
DECLARE  @TAB TABLE (CODIGO VARCHAR(10), MES VARCHAR(10) , VALOR DECIMAL(12,2))
INSERT INTO @TAB (CODIGO, MES , VALOR ) VALUES ('0101', '012003', 415235.25)
INSERT INTO @TAB (CODIGO, MES , VALOR ) VALUES ('0101', '022003', 15235.45)
INSERT INTO @TAB (CODIGO, MES , VALOR ) VALUES ('0101', '032003', 41535.78)
INSERT INTO @TAB (CODIGO, MES , VALOR ) VALUES ('0101', '042003', 41523.20)
INSERT INTO @TAB (CODIGO, MES , VALOR ) VALUES ('0201', '012003', 8564.25)
INSERT INTO @TAB (CODIGO, MES , VALOR ) VALUES ('0201', '022003', 758.45)
INSERT INTO @TAB (CODIGO, MES , VALOR ) VALUES ('0201', '032003', 35.78)
INSERT INTO @TAB (CODIGO, MES , VALOR ) VALUES ('0201', '042003', 23.20)

SELECT * FROM @TAB

SELECT CODIGO, 
    SUM(CASE SUBSTRING(MES,1,2) WHEN '01' THEN VALOR ELSE 0 END) AS DIA1,
    SUM(CASE SUBSTRING(MES,1,2) WHEN '02' THEN VALOR ELSE 0 END) AS DIA2,
    SUM(CASE SUBSTRING(MES,1,2) WHEN '03' THEN VALOR ELSE 0 END) AS DIA3,
    SUM(CASE SUBSTRING(MES,1,2) WHEN '04' THEN VALOR ELSE 0 END) AS DIA4
FROM @TAB
GROUP BY CODIGO


SELECT P1.*, (P1.DIA1 + P1.DIA2 + P1.DIA3 + P1.DIA4) AS TOTAL_ANO
FROM (SELECT CODIGO, 
    SUM(CASE SUBSTRING(MES,1,2) WHEN '01' THEN VALOR ELSE 0 END) AS DIA1,
    SUM(CASE SUBSTRING(MES,1,2) WHEN '02' THEN VALOR ELSE 0 END) AS DIA2,
    SUM(CASE SUBSTRING(MES,1,2) WHEN '03' THEN VALOR ELSE 0 END) AS DIA3,
    SUM(CASE SUBSTRING(MES,1,2) WHEN '04' THEN VALOR ELSE 0 END) AS DIA4
FROM @TAB P
GROUP BY CODIGO) AS P1

Considerações finais:

Esta é somente um das formas de como o CASE pode ser utilizado.

No exemplo 02 mostra como simular uma consulta referência cruzada através de SQL puro (sei que não muita vantagem com as ferramentas de DW, mas fazer-se-a o que? :o ) inspirado no Books Online

Irei acrescentando outros exemplos com o tempo.

E lembrem-se estes exemplos não passam de elocubrações.

Fonte/Autor/link

AUTOR: "Jothaz"

Dúvidas, criticas, contribuições, correções e adições serão bem vindas.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...