내가하려는 것은 동일한 열에 대해 둘 이상의 CASE WHEN 조건을 사용하는 것입니다.
다음은 쿼리에 대한 코드입니다.
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)
그러나 내가하고 싶은 것은 동일한 열 “qty”에 대해 둘 이상의 WHEN을 사용하는 것입니다.
다음 코드와 같이
IF
// CODE
ELSE IF
// CODE
ELSE IF
// CODE
ELSE
// CODE
답변
case expression의 두 가지 형식 이 있습니다 . 당신은 CASE
많은 WHEN
것으로 할 수 있습니다 ;
CASE WHEN Col1 = 1 OR Col3 = 1 THEN 1
WHEN Col1 = 2 THEN 2
...
ELSE 0 END as Qty
아니면 간단한 CASE
표현
CASE Col1 WHEN 1 THEN 11 WHEN 2 THEN 21 ELSE 13 END
또는 CASE
내 CASE
등;
CASE WHEN Col1 < 2 THEN
CASE Col2 WHEN 'X' THEN 10 ELSE 11 END
WHEN Col1 = 2 THEN 2
...
ELSE 0 END as Qty
답변
이것을 사용하십시오. 수업 일 때 더 많이 사용해야합니다.
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)
답변
여러 조건이있는 경우 아래 예를 사용할 수 있습니다.
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
답변
이것은 하나의 문장에서 다른 테스트를 수행하는 효율적인 방법 일 수 있습니다
select
case colour_txt
when 'red' then 5
when 'green' then 4
when 'orange' then 3
else 0
end as Pass_Flag
이것은 평등 비교에서만 작동합니다!
답변
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
답변
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
답변
나는 비슷했지만 날짜를 다루고있었습니다. 지난 달의 모든 항목을 표시하는 쿼리로, 1 월까지 조건없이 작동합니다. 제대로 작동하려면 연도 및 월 변수를 추가해야합니다.
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)
이제 변수를 조건에 추가합니다. …
(year(CreationTime)=@yr and MONTH(creationtime)=@mth)