2016-08-29 1 views
2

나는이 MySQL의 테이블이 있습니다MySQL의 곱셈 열 및 0 행

+----+-------------+----------+------+-------+ 
| ID | DESCRIPTION | QUANTITY | EACH | PRICE | 
+----+-------------+----------+------+-------+ 
| 1 | Product 1 |  1 | 12 | 1*12 | 
| 2 | Product 2 |  2 | 3 | 2* 3 | 
| 3 | Product 3 | NULL | 3 |  | 
| 4 | Product 4 |  0 | 7 |  | 
+----+-------------+----------+------+-------+ 

그리고이 쿼리 : 1

SELECT 
    DESCRIPTION, 
    QUANTITY, 
    EACH, 
    COALESCE(QUANTITY, 1) * EACH AS PRICE 
FROM table1 
내가 NULL 대체 할

0을하고 난을 만들고 싶어 열 PRICE의 곱셈. table1의 값을 변경할 수 없기 때문에 UPDATE를 사용하고 싶지 않습니다. 감사합니다. 당신이 CASE 원하는처럼

+1

이 시도 16,QUANTITY, 각 AS (NULL 양 OR QUANTITY = 0, 양이다) 경우 ((QUANTITY은 NULL이다 OR QUANTITY QUANTITY 등 = 0,1, QUANTITY) 경우) * table1' – Manish

답변

2

시도를

SELECT 
    DESCRIPTION, 
    QUANTITY, 
    EACH, 
    COALESCE(IF(QUANTITY = NULL OR QUANTITY = 0,1,QUANTITY), 1) * EACH AS PRICE 
FROM table1 
+1

일, 고마워요! – ster

+0

유용 할 경우 답변을 수락하십시오. –

+0

QUANTITY = NULL이 효과가 없습니다 (예상 한 방식이 아니더라도 사실이 아닙니다). 'QUANTITY IS NULL'을 사용하면'COALESCE'를 제거 할 수 있습니다. – Solarflare

0

그것은 소리 :,` 설명을 선택 : 쿼리 아래

SELECT DESCRIPTION, QUANTITY, EACH, 
     ((CASE WHEN QUANTITY IS NULL THEN 0 
       WHEN QUANTITY = 0 THEN 1 
       ELSE QUANTITY 
     END) * EACH 
     ) AS PRICE 
FROM table1; 
+0

FROM PRICE AS EACH하지 이 코드를 작업하십시오 – ster

1
SELECT 
    DESCRIPTION, 
    QUANTITY, 
    EACH, 
    IF(QUANTITY,QUANTITY, 1) * EACH AS PRICE 
FROM table1 

SQL Fiddle