2016-08-29 5 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 |  | 
+----+-------------+----------+------+-------+ 

そして、このクエリ:

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

私は1とNULLと0を交換したいと私はしたいです列PRICEでの乗算。私はtable1の値を変更することができないので、UPDATEを使用したくありません。 ありがとうございました!

+1

下に試してみてください数量、 EACHとして(数量がNULLまたは数量= 0,1、量である)場合、 ((数量がNULLであるまたは数量量として= 0,1、数量)場合)* 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

あなたがCASEをしたいようですね:、 ` 説明を選択:

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

からの価格 AS EACHありませんこのコードを作業してください – ster

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

SQL Fiddle