excel oracle 可为空,类似excel定位功能用不为空值填充为空列,用sql怎么实现

测试了,知道了order by rownum的理由

SQL> with t as(select 1 a ,2 b from dual union all select 2,null from dual union all select 1.5,3 from dual)

2  select a,last_value(b ignore nulls)over() from t;

A LAST_VALUE(BIGNORENULLS)OVER()

---------- ------------------------------

1                              3

2                              3

1.5                              3

已用时间:  00: 00: 00.04

SQL> with t as(select 1 a ,2 b from dual union all select 2,null from dual union all select 1.5,3 from dual)

2  select a,last_value(b ignore nulls)over(order by a) from t;

A LAST_VALUE(BIGNORENULLS)OVER(ORDERBYA)

---------- --------------------------------------

1                                      2

1.5                                      3

2                                      3

已用时间:  00: 00: 00.07

SQL> with t as(select 1 a ,2 b from dual union all select 2,null from dual union all select 1.5,3 from dual)

2  select a,last_value(b ignore nulls)over(order by rowid) from t;

select a,last_value(b ignore nulls)over(order by rowid) from t

*

第 2 行出现错误:

ORA-01446: 无法使用 DISTINCT, GROUP BY 等子句从视图中选择 ROWID 或采样

已用时间:  00: 00: 00.03

SQL> with t as(select 1 a ,2 b from dual union all select 2,null from dual union all select 1.5,3 from dual)

2  select a,last_value(b ignore nulls)over(order by rownum) from t;

A LAST_VALUE(BIGNORENULLS)OVER(ORDERBYROWNUM)

---------- -------------------------------------------

1                                           2

2                                           2

1.5                                           3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值