[2021] SQL Server – ¿Cómo realizo un SI … ENTONCES en un SELECCIÓN de SQL? {DH}


Utilice lógica de bits pura:

DECLARE @Product TABLE (
    id INT PRIMARY KEY IDENTITY NOT NULL
   ,Obsolote CHAR(1)
   ,Instock CHAR(1)
)

INSERT INTO @Product ([Obsolote], [Instock])
    VALUES ('N', 'N'), ('N', 'Y'), ('Y', 'Y'), ('Y', 'N')

;
WITH cte
AS
(
    SELECT
        'CheckIfInstock' = CAST(ISNULL(NULLIF(ISNULL(NULLIF(p.[Instock], 'Y'), 1), 'N'), 0) AS BIT)
       ,'CheckIfObsolote' = CAST(ISNULL(NULLIF(ISNULL(NULLIF(p.[Obsolote], 'N'), 0), 'Y'), 1) AS BIT)
       ,*
    FROM
        @Product AS p
)
SELECT
    'Salable' = c.[CheckIfInstock] & ~c.[CheckIfObsolote]
   ,*
FROM
    [cte] c

Respecto demostración de trabajo: si no, entonces no case en el servidor SQL.

Para empezar necesitas calcular el valor de true y false para condiciones seleccionadas. Aquí vienen dos NULLIF:

for true: ISNULL(NULLIF(p.[Instock], 'Y'), 1)
for false: ISNULL(NULLIF(p.[Instock], 'N'), 0)

Juntos suman 1 o 0. Próximo uso operadores bit a bit.

Es la mayor parte WYSIWYG Método.


SEGUIR LELLENDO:
[2021] SQL Server – ¿Cómo realizo un SI … ENTONCES en un SELECCIÓN de SQL? {DH}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *