[SQL] MySQL은 Case 문
SQLMySQL은 Case 문
나는 다음과 같은 정의를 'tbl_transaction'라는 데이터베이스 테이블을 가지고 :
id INT(11) Primary Key
action_type ENUM('Expense', 'Income')
action_heading VARCHAR (255)
action_amount FLOAT
소득 AMT 사의과 비용 AMT 사의 : 나는 두 개의 열을 생성하고 싶습니다.
이 사용 조건에 열을 채울 수 있나요 만 SQL 쿼리 등이 올바른 열의 출력이 나타납니다, 그것이 비용 항목 또는 소득 항목이 있는지 여부에 따라?
예를 들면 :
ID Heading Income Amt Expense Amt
1 ABC 1000 -
2 XYZ - 2000
나는 데이터베이스로 MySQL을 사용하고 있습니다. 나는이 작업을 수행하기 위해 CASE 문을 사용하려고 해요.
건배!
해결법
-
==============================
1.예,이 같은 :
예,이 같은 :
SELECT id, action_heading, CASE WHEN action_type = 'Income' THEN action_amount ELSE NULL END AS income_amt, CASE WHEN action_type = 'Expense' THEN action_amount ELSE NULL END AS expense_amt FROM tbl_transaction;
다른 답변이 지적한 것처럼, MySQL은 또한 구문 자세한 적게 사용하여이 작업을 수행 할 수있는 IF () 함수를 가지고있다. 나는 일반적으로 그것은 일반적으로 다른 곳에서 지원되지 않는 SQL에 대한 MySQL의 특정 확장이기 때문에이를 방지하려고합니다. CASE는 표준 SQL과 다른 데이터베이스 엔진을 통해 더 많은 휴대용, 나는 휴대용 대안이 상당히 느린 이하 편리 경우에만 엔진 특정 확장자를 사용하여 가능한 한 많은 휴대용 쿼리를 작성하는 것을 선호합니다.
-
==============================
2.MySQL은 또한) (IF가 있습니다 :
MySQL은 또한) (IF가 있습니다 :
SELECT id, action_heading, IF(action_type='Income',action_amount,0) income, IF(action_type='Expense', action_amount, 0) expense FROM tbl_transaction
-
==============================
3.IF를 사용하는 것을 시도하십시오 (조건, 값 1, 값)
IF를 사용하는 것을 시도하십시오 (조건, 값 1, 값)
SELECT ID, HEADING, IF(action_type='Income',action_amount,0) as Income, IF(action_type='Expense',action_amount,0) as Expense
-
==============================
4.이 작업을해야합니다 :
이 작업을해야합니다 :
select id ,action_heading ,case when action_type='Income' then action_amount else 0 end ,case when action_type='Expense' then expense_amount else 0 end from tbl_transaction
-
==============================
5.@cdhowie 다른 사람들이 여기에 (무엇을 설명처럼 하나 여기에 문서화 : 명심해야 할 또 다른 것은이 MySQL의 두 가지 경우가있다 http://dev.mysql.com/doc/refman/5.7/en/control-flow -functions.html # operator_case)와 CASE라고하지만, 완전히 다른 문법과 완전히 다른 기능을 가지고 뭔가, 여기에 설명 : https://dev.mysql.com/doc/refman/5.0/en/case.html
@cdhowie 다른 사람들이 여기에 (무엇을 설명처럼 하나 여기에 문서화 : 명심해야 할 또 다른 것은이 MySQL의 두 가지 경우가있다 http://dev.mysql.com/doc/refman/5.7/en/control-flow -functions.html # operator_case)와 CASE라고하지만, 완전히 다른 문법과 완전히 다른 기능을 가지고 뭔가, 여기에 설명 : https://dev.mysql.com/doc/refman/5.0/en/case.html
내가 다른 할 때 변함없이, 내가 먼저 하나를 사용하십시오.
-
==============================
6.나는 이것이 적합한 솔루션을 제공 할 것입니다 희망 :
나는 이것이 적합한 솔루션을 제공 할 것입니다 희망 :
통사론:
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list].... [ELSE statement_list] END CASE
이행:
select id, action_heading, case when action_type="Expense" then action_amount else NULL end as Expense_amt, case when action_type ="Income" then action_amount else NULL end as Income_amt from tbl_transaction;
그것보다 경우 - 당시 다른 더 유연 여기에 내가 CASE 문을 사용하고 있습니다. 그것은 더 한 지점보다 수 있습니다. 그리고 CASE 문은 대부분의 데이터베이스 표준 SQL과 작품입니다.
from https://stackoverflow.com/questions/15265874/case-statement-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의 : 등에 의해 주문? (0) | 2020.04.30 |
---|---|
[SQL] 하위 쿼리와 상관 하위 쿼리의 차이 (0) | 2020.04.30 |
[SQL] VARCHAR와 DATE / DATETIME을 사용하는 경우 (0) | 2020.04.30 |
[SQL] SQL 서버 문자열로 VARBINARY로 변환 (0) | 2020.04.30 |
[SQL] 하지가 존재하는 경우 테이블을 만들 PostgreSQL을 (0) | 2020.04.30 |