반응형
'SELECT' 문의 'IF' - 열 값을 기준으로 출력 값 선택
SELECT id, amount FROM report
필요합니다amount
되려고amount
한다면report.type='P'
그리고.-amount
한다면report.type='N'
위의 쿼리에 이 항목을 추가하려면 어떻게 해야 합니까?
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인 경우에도 처리할 수 있습니다.금액이 null인 경우:
SELECT id,
IF(type = 'P', IFNULL(amount,0), IFNULL(amount,0) * -1) as amount
FROM report
그 부분IFNULL(amount,0)
금액이 null이 아닌 경우 반환금액이 0을 반환하는 것을 의미합니다.
를 사용하다case
스테이트먼트:
select id,
case report.type
when 'P' then amount
when 'N' then -amount
end as amount
from
`report`
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;
select
id,
case
when report_type = 'P'
then amount
when report_type = 'N'
then -amount
else null
end
from table
가장 간단한 방법은 IF()를 사용하는 것입니다.Yes Mysql을 사용하면 조건부 로직을 수행할 수 있습니다.IF 함수는 3개의 파라미터 조건, TRUE RESUCT, FALSE RESUCT를 취합니다.
그래서 로직은
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
모든 no가 +ve인 경우 abs()를 건너뛸 수 있습니다.
SELECT id, amount
FROM report
WHERE type='P'
UNION
SELECT id, (amount * -1) AS amount
FROM report
WHERE type = 'N'
ORDER BY id;
이것도 드셔보세요
SELECT id , IF(type='p', IFNULL(amount,0), IFNULL(amount,0) * -1) as amount FROM table
언급URL : https://stackoverflow.com/questions/5951157/if-in-select-statement-choose-output-value-based-on-column-values
반응형
'source' 카테고리의 다른 글
Node.js와 브라우저 간에 코드를 공유하려면 어떻게 해야 하나요? (0) | 2023.01.15 |
---|---|
NULL을 허용하도록 MySQL 열을 수정하려면 어떻게 해야 합니까? (0) | 2023.01.15 |
php로 날짜/시간에서 년/월/일을 가져오시겠습니까? (0) | 2023.01.15 |
Python은 MySQL 준비문을 지원합니까? (0) | 2023.01.15 |
PHP에서 가중치별로 랜덤 결과를 생성하시겠습니까? (0) | 2023.01.15 |