3

我有一个表,其中有 n 列和 n 列。一些列名如下

c, c2,c3,c4,c5  , c25

sample data
c1    c2     c3   c4  c5  (consider only 5 in this case)
x     y      z    z  y
x     y
x
a     b     j     k
a     c      g    h  i
k     l      m    n  o

现在 op = 第二个非空值来自上述数据的右侧样本 op

z
x
x  (special case as no data left of x)
j
h
n 

不能使用 COALESCE 广告我需要第二个不是 null 不是第一个

有人可以帮我解决这个问题吗

4

2 回答 2

3

您可以使用更复杂的case语句来做到这一点:

select (case when c5 is not null
             then coalesce(c4, c3, c2, c1)
             when c4 is not null
             then coalesce(c3, c2, c1)
             when c3 is not null
             then coalesce(c2, c1)
             else c1
        end)
. . .
于 2012-12-04T18:48:51.283 回答
1

就像是:

 select nvl2(c5,c4,nvl2(c4,c3,nvl2(c3,c2,c1))) result
 from   my_table

未测试。

于 2012-12-04T18:27:16.640 回答