when w3schools switch stored hacer ejemplos cómo sql sql-server syntax case

w3schools - SQL Server-Declaración de caso



select case sql ejemplos (4)

Estoy buscando una manera de crear una selección sin repetir la consulta condicional.

Supongo que no quieres repetir Foo-stuff+bar . Podrías poner tu cálculo en una tabla derivada:

SELECT CASE WHEN a.TestValue > 2 THEN a.TestValue ELSE ''Fail'' END FROM (SELECT (Foo-stuff+bar) AS TestValue FROM MyTable) AS a

Una expresión de tabla común funcionaría igual de bien:

WITH a AS (SELECT (Foo-stuff+bar) AS TestValue FROM MyTable) SELECT CASE WHEN a.TestValue > 2 THEN a.TestValue ELSE ''Fail'' END FROM a

Además, cada parte de su conmutador debe devolver el mismo tipo de datos, por lo que es posible que tenga que emitir uno o más casos.

Estoy casi seguro de que no puede hacer esto dentro del contexto de la declaración del caso, y no he podido encontrar ninguna documentación al respecto, pero es posible hacer lo siguiente:

SELECT CASE WHEN testValue > 2 THEN testValue(Without Repeating it) ELSE FailValue) END FROM Table

Un mejor ejemplo más completo:

Select CASE WHEN (Foo-stuff+bar) > 2 THEN Conditional statement without >2 Else "Fail" END FROM TABLE

Estoy buscando una manera de crear una selección sin repetir la consulta condicional.

EDIT: debido a un mal ejemplo de mi parte, y la falta de respuestas que estaba buscando:

testValue = (Table.A / Table.B) * Table.C Table.D SELECT CASE WHEN testValue > 2 THEN testValue ELSE FailValue) END FROM Table


Al igual que

DECLARE @t INT=1 SELECT CASE WHEN @t>0 THEN CASE WHEN @t=1 THEN ''one'' ELSE ''not one'' END ELSE ''less than one'' END

EDITAR: Después de analizar más la pregunta, creo que la mejor opción es crear una función que calcule el valor. De esa manera, si terminas teniendo varios lugares donde se realizan los cálculos, solo tienes un punto para mantener la lógica.


La consulta se puede escribir un poco más simple, así:

DECLARE @T INT = 2 SELECT CASE WHEN @T < 1 THEN ''less than one'' WHEN @T = 1 THEN ''one'' ELSE ''greater than one'' END T


Podemos usar declaración de caso como esta

select Name,EmailId,gender=case when gender=''M'' then ''F'' when gender=''F'' then ''M'' end from [dbo].[Employees]

También podemos hacerlo como sigue.

select Name,EmailId,case gender when ''M'' then ''F'' when ''F'' then ''M'' end from [dbo].[Employees]