source

'SELECT' 문의 'IF' - 열 값을 기준으로 출력 값 선택

lovecheck 2023. 1. 15. 17:01
반응형

'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

반응형