就像我有这样的桌子
col1 col2 col3 col4
---- ---- ---- ----
1 NULL NULL NULL
NULL 2 NULL NULL
3 NULL NULL NULL
NULL NULL NULL 4
预期结果是:
col5
----
1
2
3
4
如何使用SQL查询获得这种输出?
答案 0 :(得分:2)
如果您想要第一个非NULL值,则正在寻找coalesce()
:
select t.*, coalesce(col1, col2, col3, col4) as col5
from t;
答案 1 :(得分:1)
尝试
SELECT
(CASE
WHEN col1 IS NOT NULL THEN col1
WHEN col2 IS NOT NULL THEN col2
WHEN col3 IS NOT NULL THEN col3
WHEN col4 IS NOT NULL THEN col4
END) AS col5 FROM table
答案 2 :(得分:0)
您的标题表明:
select t.*
from (select col1 as col5
from table union all
select col2
from table union all
. . .
) t
where col5 is not null;
答案 3 :(得分:0)
Select * from your_table
WHERE col1 and col2 and col3 and col4 and col5 IS NOT NULL;
在这种方法中,我们只能比较我们的列,之后结果将始终为true,因此我只比较其中的字段不能为NULL的字段。