반응형
SQL Server 2008을 사용하여 여러 CASE WHEN 조건을 어떻게 수행합니까?
내가하려고하는 것은 동일한 열에 대해 둘 이상의 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
I had a similar but it was dealing with dates. Query to show all items for the last month, works great without conditions until Jan. In order for it work correctly, needed to add a year and month variable
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)
Now I just add the variable into condition: ...
(year(CreationTime)=@yr and MONTH(creationtime)=@mth)
Combining all conditions
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 )
)
반응형
'development' 카테고리의 다른 글
링크가없는 JavaScript Blob 파일 이름 (0) | 2020.06.09 |
---|---|
자바 세트 주문 유지? (0) | 2020.06.09 |
Github“원격에없는 작업이 포함되어 있기 때문에 업데이트가 거부되었습니다” (0) | 2020.06.09 |
DialogFragment에서 조각으로 콜백 (0) | 2020.06.09 |
연결하지 않고 문자열에 상수 포함 (0) | 2020.06.09 |