微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在列有字符串值的情况下如何使用解码函数

如何解决在列有字符串值的情况下如何使用解码函数

我有一个视图 xxabc_v(如下所示),当“值”列总和 (900+(-900)=0) 为“日期”01-Apr-21 的“field_name”值(需求 A+需求 B)。

在上述情况下,如何将解码逻辑放到代码列中?

表结构和预期输出

enter image description here

解决方法

您不想要 decode() 因为一个更简单的方法有效:

select nullif(code,'N/A')

NULL 为指定值时返回 code

如果您确实想更改数据,那么您需要update

update t
    set code = NULL
    where code = 'N/A';

编辑:

我明白了,你有一个额外的条件。所以,使用 case:

(case when code = 'N/A' and
           sum(value) over (partition by id,date) = 0
      then NULL
      else code
 end)
,

我假设你需要日期明智的 id 明智的 sum 何时 sum()。请检查一下:

select date,id,(case when sum(value)over(partition by date,id)=0 and code='N/A' then NULL
else Code end)code,field_name,value
from tablename

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。