[SQL] 2008 SQL 서버를 사용하는 경우 조건이 어떻게 여러 CASE해야합니까?
SQL2008 SQL 서버를 사용하는 경우 조건이 어떻게 여러 CASE해야합니까?
난 할 노력하고있어하는 하나 이상의 CASE 사용되면 같은 열의 조건.
다음은 쿼리에 대한 내 코드는 다음과 같습니다
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)
그러나, 내가하고 싶은 두 개 이상의 동일한 열 "수량"의 사용이다.
다음 코드에서와 같이 :
IF
// CODE
ELSE IF
// CODE
ELSE IF
// CODE
ELSE
// CODE
해결법
-
==============================
1.경우 표현의 두 가지 형식이있다. 당신은 언제 많은과 CASE를 할 수 있습니다
경우 표현의 두 가지 형식이있다. 당신은 언제 많은과 CASE를 할 수 있습니다
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
-
==============================
2.그냥 당신은 그들이 수업 때 더 사용해야합니다,이 하나를 사용하십시오.
그냥 당신은 그들이 수업 때 더 사용해야합니다,이 하나를 사용하십시오.
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)
-
==============================
3.당신은 때 여러 조건으로 사건의 예를 아래에 사용할 수 있습니다.
당신은 때 여러 조건으로 사건의 예를 아래에 사용할 수 있습니다.
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
-
==============================
4.이것은 하나의 문에 다른 테스트를 수행하는 효과적인 방법이 될 수있다
이것은 하나의 문에 다른 테스트를 수행하는 효과적인 방법이 될 수있다
select case colour_txt when 'red' then 5 when 'green' then 4 when 'orange' then 3 else 0 end as Pass_Flag
이것은 단지 평등 비교에서 작동합니다!
-
==============================
5.
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
-
==============================
6.
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
-
==============================
7.나는 비슷한했다하지만 날짜를 처리했다. 지난 달에 대한 모든 항목을 표시하는 쿼리 월까지 조건없이 좋은 작품 순서대로 올바르게, 년월 변수를 추가하는 데 필요한 작업을위한
나는 비슷한했다하지만 날짜를 처리했다. 지난 달에 대한 모든 항목을 표시하는 쿼리 월까지 조건없이 좋은 작품 순서대로 올바르게, 년월 변수를 추가하는 데 필요한 작업을위한
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)
-
==============================
8.모든 조건을 결합
모든 조건을 결합
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 ) )
-
==============================
9.이런 식으로 뭔가, 두 조건 두 열
이런 식으로 뭔가, 두 조건 두 열
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
-
==============================
10.그 하나의 경우에 다른 .. 경우 ELSEIF처럼 행동 할 때 여러 필요 그냥 ..
그 하나의 경우에 다른 .. 경우 ELSEIF처럼 행동 할 때 여러 필요 그냥 ..
Case when 1=1 //if Then When 1=1 //else if Then.... When ..... //else if Then Else //else ....... End
from https://stackoverflow.com/questions/14630984/how-do-i-do-multiple-case-when-conditions-using-sql-server-2008 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 내가 업데이트 위로에게 SQL 서버 (100) 기록을 할 수 (0) | 2020.04.17 |
---|---|
[SQL] 기본 키를 사용하여 이메일 주소? (0) | 2020.04.17 |
[SQL] 동적 정렬 SQL 저장 프로 시저 내에서 (0) | 2020.04.17 |
[SQL] RANK ()와 DENSE_RANK () 오라클 함수의 차이점은 무엇입니까? (0) | 2020.04.17 |
[SQL] 포스트 그레스에서 재설정 자동 증가 카운터 (0) | 2020.04.17 |