首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在varchar2字段上使用lead()和lead()?

如何在varchar2字段上使用lead()和lead()?
EN

Stack Overflow用户
提问于 2013-03-26 17:35:36
回答 1查看 1.3K关注 0票数 0

甲骨文11g 到目前为止我在SQL Fiddle上的工作

我在列上使用了和函数。使用以下规则,我希望生成所需的结果。

  1. 如果lag_val是空的,那么'(‘)
  2. 如果lag_val与set_a相同,那么‘和’
  3. 如果lag_val != set_a那么‘或’
  4. 如果lead_val是空的,那么')‘

当我使用nvl()转换空值以便进行比较时,我会得到“无效数字”。

期望输出

代码语言:javascript
复制
   SEQNO SET_A LAG_VAL  LEAD_VAL  MENU_ENTRY
   ------------------------------------------
   1      CAKE  <null>  CAKE      (
   2      CAKE  CAKE    BEER      AND
   3      BEER  CAKE    BRATS     OR
   4      BRATS BEER    <null>    )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-26 18:08:53

您的问题是,您在字符串上使用的是"-“运算符,而不是带铅/滞后的运算符。我想你想要这个:

代码语言:javascript
复制
select  seqno,
         set_a,
         lag_val,
         lead_val
    , case 
    when (lag_val ) is null then '('
    when (lead_val ) is null then ')'
    when (lag_val = set_a) then 'and'    
    else  'or'
    end  as menu_entry
from ( select seqno, 
        set_a, 
        lag(set_a,1) over (order by seqno) as lag_val,
--        lag(to_number,'XX') over (order by seqno) as lag_val,
        lead(set_a,1) over (order by seqno) as lead_val       
 from menu_items)
order by seqno
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15643770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档