[SQL] 열 값을 기준으로 선택 출력 값 - 문 'SELECT'을의 'IF'
SQL열 값을 기준으로 선택 출력 값 - 문 'SELECT'을의 'IF'
SELECT id, amount FROM report
이 경우 I report.type = 'P'및 -AMOUNT 경우 report.type = 'N'에 상당 양일 필요는 없다. 어떻게 위의 질의에이를 추가하는 방법은 무엇입니까?
해결법
-
==============================
1.
SELECT id, IF(type = 'P', amount, amount * -1) as amount FROM report
http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html를 참조하십시오.
상태가 null 인 경우 또한 처리 할 수 있습니다. 널 량의 경우 :
SELECT id, IF(type = 'P', IFNULL(amount,0), IFNULL(amount,0) * -1) as amount FROM report
부품 IFNULL (양, 0) 수단 량이 널 복귀 량, 그렇지 0이 아니다.
-
==============================
2.case 문을 사용합니다 :
case 문을 사용합니다 :
select id, case report.type when 'P' then amount when 'N' then -amount end as amount from `report`
-
==============================
3.
SELECT CompanyName, CASE WHEN Country IN ('USA', 'Canada') THEN 'North America' WHEN Country = 'Brazil' THEN 'South America' ELSE 'Europe' END AS Continent FROM Suppliers ORDER BY CompanyName;
-
==============================
4.
select id, case when report_type = 'P' then amount when report_type = 'N' then -amount else null end from table
-
==============================
5.대부분의 간단한 방법은 IF를 사용하는 것입니다 (). 예 MySQL은 조건부 논리를 수행 할 수 있습니다. 기능 3 PARAMS 조건 OUTCOME TRUE, FALSE 결과 걸리면.
대부분의 간단한 방법은 IF를 사용하는 것입니다 (). 예 MySQL은 조건부 논리를 수행 할 수 있습니다. 기능 3 PARAMS 조건 OUTCOME TRUE, FALSE 결과 걸리면.
그래서 논리는
if report.type = 'p' amount = amount else amount = -1*amount
SQL
SELECT id, IF(report.type = 'P', abs(amount), -1*abs(amount)) as amount FROM report
전혀의이 +는 적이없는 경우 당신은 복근 ()를 건너 뛸 수 있습니다
-
==============================
6.
SELECT id, amount FROM report WHERE type='P' UNION SELECT id, (amount * -1) AS amount FROM report WHERE type = 'N' ORDER BY id;
-
==============================
7.당신이 시도 할 수 있습니다
당신이 시도 할 수 있습니다
SELECT id , IF(type='p', IFNULL(amount,0), IFNULL(amount,0) * -1) as amount FROM table
from https://stackoverflow.com/questions/5951157/if-in-select-statement-choose-output-value-based-on-column-values by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] IN 성능 대 MYSQL OR (0) | 2020.03.10 |
---|---|
[SQL] 오라클의 다중 행 삽입을 할 수있는 가장 좋은 방법은? (0) | 2020.03.10 |
[SQL] 자동 증분 테이블 열 (0) | 2020.03.10 |
[SQL] 오라클 SQL 피벗 쿼리 (0) | 2020.03.10 |
[SQL] INNER은 SQL에 가입 대 CROSS는 가입 (0) | 2020.03.10 |