我的数据库中有一个表,如下所示:
+-------------+---------+--------+
| ProductName | Status | Branch |
+-------------+---------+--------+
| P1 | dead | 1 |
| P1 | dead | 2 |
| P2 | expired | 1 |
+-------------+---------+--------+
我想将产品比较后的结果显示为:
+-------------+---------+--------+
| ProductName | Branch 1|Branch 2|
+-------------+---------+--------+
| P1 | dead | dead|
| P2 | expired | OK |
+-------------+---------+--------+
在我运行以下查询之后:
<pre>
SELECT ProductName,
MAX(CASE
WHEN Branch=1
THEN Status
ELSE NULL
END) AS 'Branch 1',
MAX(CASE
WHEN Branch=2
THEN Status
ELSE NULL
END) AS 'Branch 2'
FROM MyTable
GROUP BY ProductName;
我得到的结果是:
+-------------+---------+--------+
| ProductName | Branch 1|Branch 2|
+-------------+---------+--------+
| P1 | dead | dead|
| P2 | expired | NULL|
+-------------+---------+--------+
SQLFiddle
我想用 OK 替换 NULL 但无法获得所需的结果。请指出我正确的方向。谢谢
最佳答案
使用COALESCE()
转义null
SELECT ProductName,
COALESCE( MAX(CASE
WHEN Branch=1
THEN Status
ELSE NULL
END) ,'OK') AS 'Branch 1',
COALESCE( MAX(CASE
WHEN Branch=2
THEN Status
ELSE NULL
END),'OK') AS 'Branch 2'
FROM MyTable
GROUP BY ProductName;
关于mysql - 用一些字符串替换 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31791735/