Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
jothaz

CASE - exemplos de uso

Question

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.

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148393
    • Total Posts
      643787
×
×
  • Create New...