Pergunta

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
        ELSE 'Other'
    END

Eu vi este código de exemplo online, mas eu não poderia encontrar um exemplo onde não havia nenhuma expressão e tinha mais de um, quando, então eu estou querendo saber se este tipo de coisa é OK:

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
                WHEN (select ...) = 1 THEN 'Other Value'
                WHEN (select ...) = 2 THEN 'Other Value 2'
        ELSE 'Other'
    END

Ou eu preciso dizer CASE WHEN para cada linha?

Foi útil?

Solução

Caso toma a seguinte forma

CASE WHEN Condition THEN Result
     WHEN Condition2 THEN Result2
ELSE Default
END

Editar

Este assume seu usando Microsoft SQL Server outros DBMS pode ser diferente

Outras dicas

Sim, isso é bom, mas eu gostaria de alinhar o "quando" é vertical e explicá-lo mais parecido com isto:

SELECT
    CASE
        WHEN @TestVal <=3  THEN 'Top 3'
        WHEN @TestVal <=10 THEN 'Top 10'
        WHEN @TestVAl <=25 THEN 'Top 25'
        ELSE 'Other'
    END

A formatação pode ser apenas uma falha de remarcação, mas a (select...) no seu exemplo complicado que deve ser um trecho de mais simples.

    SELECT
       CASE
          WHEN @TestVal <=3  THEN 'Top 3'
          WHEN @TestVal <=10 THEN 'Top 10'
          WHEN @TestVAl <=25 THEN 'Top 25'
          ELSE 'Other'
       END

No que diz respeito a declarações de caso de nidificação isso pode ser feito, bem como (até 10 instruções case aninhadas permitido dentro do SQL)

http://msdn.microsoft.com/en-us/library/ ms181765.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top