[SQL] OR은 SQL Server의 CASE 문이 지원되지 않습니다
SQLOR은 SQL Server의 CASE 문이 지원되지 않습니다
case 문의 WHEN 절에 OR 연산자는 지원되지 않습니다. 이걸 어떻게 할 수 있습니까?
CASE ebv.db_no
WHEN 22978 OR 23218 OR 23219 THEN 'WECS 9500'
ELSE 'WECS 9520'
END as wecs_system
해결법
-
==============================
1.그 형식 중 하나를 사용해야합니다 :
그 형식 중 하나를 사용해야합니다 :
CASE ebv.db_no WHEN 22978 THEN 'WECS 9500' WHEN 23218 THEN 'WECS 9500' WHEN 23219 THEN 'WECS 9500' ELSE 'WECS 9520' END as wecs_system
그렇지 않으면, 사용 :
CASE WHEN ebv.db_no IN (22978, 23218, 23219) THEN 'WECS 9500' ELSE 'WECS 9520' END as wecs_system
-
==============================
2.
CASE WHEN ebv.db_no = 22978 OR ebv.db_no = 23218 OR ebv.db_no = 23219 THEN 'WECS 9500' ELSE 'WECS 9520' END as wecs_system
-
==============================
3.
CASE WHEN ebv.db_no IN (22978, 23218, 23219) THEN 'WECS 9500' ELSE 'WECS 9520' END as wecs_system
-
==============================
4.당신은 때 그 표현 중 하나를 사용할 수 있지만이 둘을 혼합 할 수 없습니다.
당신은 때 그 표현 중 하나를 사용할 수 있지만이 둘을 혼합 할 수 없습니다.
당신은 프로그램 수 :
1.
CASE ProductLine WHEN 'R' THEN 'Road' WHEN 'M' THEN 'Mountain' WHEN 'T' THEN 'Touring' WHEN 'S' THEN 'Other sale items' ELSE 'Not for sale'
2.
CASE WHEN ListPrice = 0 THEN 'Mfg item - not for resale' WHEN ListPrice < 50 THEN 'Under $50' WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250' WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000' ELSE 'Over $1000' END
그러나 어떤 경우에는 변수 순위는 부울 표현식에서 비교 될 것이라는 것을 예상 할 수있다.
참조 CASE (Transact-SQL)를 참조하십시오 (MSDN).
-
==============================
5.CASE에 대한 답변을 많이가 이미 있습니다. 어떻게 CASE를 사용할 때 나는 설명 할 것이다.
CASE에 대한 답변을 많이가 이미 있습니다. 어떻게 CASE를 사용할 때 나는 설명 할 것이다.
당신은 SQL 쿼리의 아무 곳이나 CASE 표현식을 사용할 수 있습니다. CASE 표현식은 SELECT 문 내에서 사용할 수 있습니다 WHERE 절에 의해 조항, 주문, HAVING 절, 삽입, UPDATE 및 DELETE 문.
CASE 표현식은 다음과 같은 두 가지 형식이있다 :
CASE 식으로 1.SELECT 문
--Simple CASE expression: SELECT FirstName, State=(CASE StateCode WHEN 'MP' THEN 'Madhya Pradesh' WHEN 'UP' THEN 'Uttar Pradesh' WHEN 'DL' THEN 'Delhi' ELSE NULL END), PayRate FROM dbo.Customer -- Searched CASE expression: SELECT FirstName,State=(CASE WHEN StateCode = 'MP' THEN 'Madhya Pradesh' WHEN StateCode = 'UP' THEN 'Uttar Pradesh' WHEN StateCode = 'DL' THEN 'Delhi' ELSE NULL END), PayRate FROM dbo.Customer
CASE 식 2.Update 문
-- Simple CASE expression: UPDATE Customer SET StateCode = CASE StateCode WHEN 'MP' THEN 'Madhya Pradesh' WHEN 'UP' THEN 'Uttar Pradesh' WHEN 'DL' THEN 'Delhi' ELSE NULL END -- Simple CASE expression: UPDATE Customer SET StateCode = CASE WHEN StateCode = 'MP' THEN 'Madhya Pradesh' WHEN StateCode = 'UP' THEN 'Uttar Pradesh' WHEN StateCode = 'DL' THEN 'Delhi' ELSE NULL END
CASE 식으로 3.ORDER BY 절
-- Simple CASE expression: SELECT * FROM dbo.Customer ORDER BY CASE Gender WHEN 'M' THEN FirstName END Desc, CASE Gender WHEN 'F' THEN LastName END ASC -- Searched CASE expression: SELECT * FROM dbo.Customer ORDER BY CASE WHEN Gender='M' THEN FirstName END Desc, CASE WHEN Gender='F' THEN LastName END ASC
CASE 표현식으로 절을 4.Having
-- Simple CASE expression: SELECT FirstName ,StateCode,Gender, Total=MAX(PayRate) FROM dbo.Customer GROUP BY StateCode,Gender,FirstName HAVING (MAX(CASE Gender WHEN 'M' THEN PayRate ELSE NULL END) > 180.00 OR MAX(CASE Gender WHEN 'F' THEN PayRate ELSE NULL END) > 170.00) -- Searched CASE expression: SELECT FirstName ,StateCode,Gender, Total=MAX(PayRate) FROM dbo.Customer GROUP BY StateCode,Gender,FirstName HAVING (MAX(CASE WHEN Gender = 'M' THEN PayRate ELSE NULL END) > 180.00 OR MAX(CASE WHEN Gender = 'F' THEN PayRate ELSE NULL END) > 170.00)
이 사용 사례는 미래에 누군가가 도움이되기를 바랍니다.
출처
-
==============================
6.시험
시험
CASE WHEN ebv.db_no IN (22978,23218,23219) THEN 'WECS 9500' ELSE 'WECS 9520' END
-
==============================
7.
SELECT Store_Name, CASE Store_Name WHEN 'Los Angeles' THEN Sales * 2 WHEN 'San Diego' THEN Sales * 1.5 ELSE Sales END AS "New Sales", Txn_Date FROM Store_Information;
-
==============================
8.
select id,phno,case gender when 'G' then 'M' when 'L' then 'F' else 'No gender' end as gender from contacts
-
==============================
9.
UPDATE table_name SET column_name=CASE WHEN column_name in ('value1', 'value2',.....) THEN 'update_value' WHEN column_name in ('value1', 'value2',.....) THEN 'update_value' END
TABLE_NAME는 작업을 수행하려는 테이블의 이름을 =.
COLUMN_NAME는 설정할 필드를 어떤 값의 열 /의 이름을 =.
update_value 당신은 COLUMN_NAME의 집합에 값 원하는 =
-
==============================
10.
Select s.stock_code,s.stock_desc,s.stock_desc_ar, mc.category_name,s.sel_price, case when s.allow_discount=0 then 'Non Promotional Item' else 'Prmotional item' end 'Promotion' From tbl_stock s inner join tbl_stock_category c on s.stock_id=c.stock_id inner join tbl_category mc on c.category_id=mc.category_id where mc.category_id=2 and s.isSerialBased=0
from https://stackoverflow.com/questions/5487892/or-is-not-supported-with-case-statement-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 무엇 MySQL의 데이터베이스 테이블 및 관계 조건 질문과 Q & A 설문 조사를 지원하는 것? [닫은] (0) | 2020.03.29 |
---|---|
[SQL] 어떻게 오라클의 테이블에서 중복 값을 찾을 수 있습니까? (0) | 2020.03.29 |
[SQL] 읽기 커밋과 반복 읽기의 차이 (0) | 2020.03.29 |
[SQL] 오라클 SQL - 열의 최대 5 개 값을 검색하는 방법 (0) | 2020.03.29 |
[SQL] SQL은 : 그룹 당 최대 기록을 찾기 [중복] (0) | 2020.03.29 |