Ik probeer meer dan één CASE WHEN-voorwaarde voor dezelfde kolom te gebruiken.
Hier is mijn code voor de zoekopdracht:
SELECT Url='',
p.ArtNo,
p.[Description],
p.Specification,
CASE
WHEN 1 = 1 or 1 = 1
THEN 1
ELSE 0
END as Qty,
p.NetPrice,
[Status] = 0
FROM Product p (NOLOCK)
Ik wil echter meer dan één WANNEER gebruiken voor dezelfde kolom “aantal”.
Zoals in de volgende code:
IF
// CODE
ELSE IF
// CODE
ELSE IF
// CODE
ELSE
// CODE
Antwoord 1, autoriteit 100%
Er zijn twee formaten van hoofdletters uitdrukking. Je kunt CASE
doen met veel When
as;
CASE WHEN Col1 = 1 OR Col3 = 1 THEN 1
WHEN Col1 = 2 THEN 2
...
ELSE 0 END as Qty
Ofeen eenvoudige CASE
-uitdrukking
CASE Col1 WHEN 1 THEN 11 WHEN 2 THEN 21 ELSE 13 END
OfCASE
binnenCASE
als;
CASE WHEN Col1 < 2 THEN
CASE Col2 WHEN 'X' THEN 10 ELSE 11 END
WHEN Col1 = 2 THEN 2
...
ELSE 0 END as Qty
Antwoord 2, autoriteit 3%
Gebruik gewoon deze, je moet meer gebruiken als het lessen zijn.
SELECT Url='',
p.ArtNo,
p.[Description],
p.Specification,
CASE
WHEN 1 = 1 or 1 = 1
THEN 1
WHEN 2 = 2
THEN 2
WHEN 3 = 3
THEN 3
ELSE 0
END as Qty,
p.NetPrice,
[Status] = 0
FROM Product p (NOLOCK)
Antwoord 3
U kunt onderstaand voorbeeld van geval gebruiken met meerdere voorwaarden.
SELECT
id,stud_name,
CASE
WHEN marks <= 40 THEN 'Bad'
WHEN (marks >= 40 AND
marks <= 100) THEN 'good'
ELSE 'best'
END AS Grade
FROM Result
Antwoord 4
case
when a.REASONID in ('02','03','04','05','06') then
case b.CALSOC
when '1' then 'yes'
when '2' then 'no'
else 'no'
end
else 'no'
end
Antwoord 5
Dit kan een efficiënte manier zijn om verschillende tests op een enkele verklaring uit te voeren
select
case colour_txt
when 'red' then 5
when 'green' then 4
when 'orange' then 3
else 0
end as Pass_Flag
dit werkt alleen bij vergelijkingen van gelijkheid!
Antwoord 6
case when first_condition
then first_condition_result_true
else
case when second_condition
then second_condition_result_true
else
second_condition_result_false
end
end
end as qty
Antwoord 7
zoiets, twee condities twee kolommen
SELECT ITEMSREQ.ITEM AS ITEM,
ITEMSREQ.CANTIDAD AS CANTIDAD,
(CASE WHEN ITEMSREQ.ITEMAPROBADO=1 THEN 'APROBADO'
WHEN ITEMSREQ.ITEMAPROBADO=0 THEN 'NO APROBADO'
END) AS ITEMS,
(CASE
WHEN ITEMSREQ.ITEMAPROBADO = 0
THEN CASE WHEN REQUISICIONES.RECIBIDA IS NULL THEN 'ITEM NO APROBADO PARA ENTREGA' END
WHEN ITEMSREQ.ITEMAPROBADO = 1
THEN CASE WHEN REQUISICIONES.RECIBIDA IS NULL THEN 'ITEM AUN NO RECIBIDO'
WHEN REQUISICIONES.RECIBIDA=1 THEN 'RECIBIDO'
WHEN REQUISICIONES.RECIBIDA=0 THEN 'NO RECIBIDO'
END
END)
AS RECIBIDA
FROM ITEMSREQ
INNER JOIN REQUISICIONES ON
ITEMSREQ.CNSREQ = REQUISICIONES.CNSREQ
Antwoord 8
Ik had een soortgelijke maar het had te maken met data.
Query om alle items voor de laatste maand te tonen, werkt goed zonder omstandigheden tot Jan.
Om ervoor te zorgen dat het correct werkt, nodig om een jaar- en maandvariabele
toe te voegen
declare @yr int
declare @mth int
set @yr=(select case when month(getdate())=1 then YEAR(getdate())-1 else YEAR(getdate())end)
set @mth=(select case when month(getdate())=1 then month(getdate())+11 else month(getdate())end)
Nu voeg ik gewoon de variabele toe in conditie:
…
(year(CreationTime)=@yr and MONTH(creationtime)=@mth)
Antwoord 9
Combineren van alle voorwaarden
select a.* from tbl_Company a
where a.Company_ID NOT IN (1,2)
AND (
(0 =
CASE WHEN (@Fromdate = '' or @Todate='')
THEN 0
ELSE 1
END
) -- if 0=0 true , if 0=1 fails (filter only when the fromdate and todate is present)
OR
(a.Created_Date between @Fromdate and @Todate )
)
Antwoord 10
Het is alleen zo dat je meerdere When
nodig hebt om een enkel geval te laten gedragen als if.. Elseif else..
Case when 1=1 //if
Then
When 1=1 //else if
Then....
When ..... //else if
Then
Else //else
.......
End