ORACLE 表格左上角非空值

Posted

技术标签:

【中文标题】ORACLE 表格左上角非空值【英文标题】:ORACLE table top left not null value 【发布时间】:2013-11-21 22:43:05 【问题描述】:

如何从表/子查询中选择左上角非空值?

解释:

colfkey col1 | col2 | col3 | col4 xxxxxxx null null '1' null xxxxxxx null '2' null null

我只需要'1'值

【问题讨论】:

【参考方案1】:

你的意思是这样的:

SELECT colfkey, COALESCE( col1, col2, col3, col4 ) AS value
FROM   table_name
WHERE  ROWNUM = 1
AND    COALESCE( col1, col2, col3, col4 ) IS NOT NULL;

SQL FIDDLE

如果您不这样做,请详细说明您的要求。

【讨论】:

【参考方案2】:

我的回答假设您想按 col 值之一对结果进行排序,否则,无法知道结果的顺序是什么:

SELECT * FROM
 (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 TOP_VALUE
   FROM expl
 ORDER BY 1 ASC) a
WHERE rownum = 1

sqlfiddle demo

【讨论】:

以上是关于ORACLE 表格左上角非空值的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 R2:从列中获取第一个非空值

Java8特性:Optional空值处理

Java8特性:Optional空值处理

列集的平均值减去最后一个非空值? [复制]

MySQL在分组后获得第一个非空值

MySQL 约束