获取以前的非空值列名
Getting the previous Non Null value columnname
我在 db2 中有一行值如下:
LEVEL1,LEVEL2,LEVEL3,LEVEL4,LEVEL5,LEVEL6,LEVEL7,LEVEL8, NAME
AB BC CD EF GH NULL NULL EGH TEST
level2的父级是level 1,level 4的父级是level 3。
例如:
BC --> AB(Parent)
CD --> BC(Parent)
但 EGH 的父级是 GH 最后一个非空字段。
我已经编写了一个查询来获取代码,父列。
select distinct(LEVEL2), LEVEL1 as parent from tablename;
但这并不像 Level8 那样在所有情况下都有效。
是否有任何查询可以通过 PL/SQL 实现 so.or。我是 PL/SQL 的菜鸟。
主要疑惑是如何获取"ColumnName ",以便在查询中替换。
select distinct(LEVEL2), LEVEL1 as parent from tablename;
我需要获取列名 LEVEL7 或 LEVEL6,取最后一个非空值。
您可以使用 coalesce
函数来 return 项目列表中的第一个非空值:
select distinct LEVEL8, COALESCE(level7, level6, level5) as parent
from tablename;
在您的示例中,这将从 LEVEL5
.
return GH
我在 db2 中有一行值如下:
LEVEL1,LEVEL2,LEVEL3,LEVEL4,LEVEL5,LEVEL6,LEVEL7,LEVEL8, NAME
AB BC CD EF GH NULL NULL EGH TEST
level2的父级是level 1,level 4的父级是level 3。 例如:
BC --> AB(Parent)
CD --> BC(Parent)
但 EGH 的父级是 GH 最后一个非空字段。
我已经编写了一个查询来获取代码,父列。
select distinct(LEVEL2), LEVEL1 as parent from tablename;
但这并不像 Level8 那样在所有情况下都有效。
是否有任何查询可以通过 PL/SQL 实现 so.or。我是 PL/SQL 的菜鸟。
主要疑惑是如何获取"ColumnName ",以便在查询中替换。
select distinct(LEVEL2), LEVEL1 as parent from tablename;
我需要获取列名 LEVEL7 或 LEVEL6,取最后一个非空值。
您可以使用 coalesce
函数来 return 项目列表中的第一个非空值:
select distinct LEVEL8, COALESCE(level7, level6, level5) as parent
from tablename;
在您的示例中,这将从 LEVEL5
.
GH