繁体   English   中英

SQL:如何将列合并为一,并过滤出NULL?

[英]SQL: How do I combine columns into one, and filter out NULLs?

这是我的桌子。 ID列表的注册日期在列通讯,报告,图表中。

在此处输入图片说明

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

我尝试了以下代码

SELECT id, 
   combined_column
FROM (
    SELECT id, 
         CONCAT(newsletter, report, infographics) AS combined_column 
    FROM table
     )

WHERE combined_column is not NULL

但这只是给我一个空白表。 有办法解决吗? 谢谢

你只想要这个吗?

select max(newsletter) as newsletter,
       max(report) as report,
       max(infographics) as infographics
from t;

答案可能取决于您使用的数据库,因此请注意。

是否像您的示例中只有一列为非空?

然后是这样的:

SELECT id, COALESCE(newsletter, infographics, report) FROM my_table;

可能对您有用...

如果使用的是Oracle,请使用NVLNULL替换为空字符串

SELECT id, 
   combined_column
FROM (
    SELECT id, 
         CONCAT(NVL(newsletter,''), NVL(report,''), NVL(infographics,'')) AS combined_column 
    FROM table
     )

WHERE combined_column is not NULL

我认为您想要coalesce返回列表中的第一个非空值(如果您连续有多个非空值,它仍将返回第一个):

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

SELECT ID,CONCAT(新闻稿,报告,信息图表)作为组合表的组合FROM表格WHERE新闻不为空且报告不为空且信息图表不为空

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM