首页 > 解决方案 > 如何将列合二为一,并过滤掉 NULL?

问题描述

这是我的桌子。在通讯、报告、信息图表列中包含注册日期的 ID 列表。

在此处输入图像描述

我想将所有这些列合并为一个,没有 NULL

我试过下面的代码

SELECT id, combined_column
FROM (
    SELECT id, CONCAT(newsletter, report, infographics) AS combined_column 
    FROM table
)
WHERE combined_column IS NOT NULL

但这只是给了我一张空白表。有没有办法解决这个问题?谢谢

标签: sql

解决方案


我想你想要coalesce从列表中返回第一个非空值(如果你连续有多个非空值,它仍然会返回第一个):

SELECT id, COALESCE(newsletter, report, infographics) AS combined_date
FROM t
WHERE COALESCE(newsletter, report, infographics) IS NOT NULL

推荐阅读