如何在给定特定条件的情况下将两个表合并在一起 - Oracle SQL

mali_the

我有一张看起来像这样的表:

lob|desc|cnt
dogs,declined,5
cats,declined,5
rats,declined,8
dogs,failed,2

我正在尝试创建一个如下所示的新表:

lob|cnt|failed_cnt
dogs,5,2
cats,5,0
rats,8,0

本质上,我通过 LOB 列将结果合并在一起,因此没有重复的记录。说明 desc 列值失败的 LOB 值,将它们合并在一起并将该 cnt 放入新列“failed_cnt”中。如果这有意义的话。

我写了一些放置空值的 SQL 代码,但仍然存在重复项。这是我的输出:

 lob|cnt|failed_cnt
  dogs,5,0
  cats,5,0
  rats,8,0
  dogs 0,2

这是我的代码:

SELECT 
    lob,
    CASE 
        WHEN CNT <> 0 AND desc not like 'Failed%' 
            THEN CNT
            ELSE 0
    END AS CNT,
    CASE  
        WHEN CNT <> 0 AND desc LIKE 'Failed%' 
            THEN CNT
            ELSE 0
    END AS FAILED_CNT
FROM 
    table1

有什么想法或建议吗?

戈登·利诺夫

使用聚合:

select lob,
       sum(case when descr = 'declined' then cnt else 0 end) as declined,
       sum(case when descr = 'failed' then cnt else 0 end) as failed
from t
group by lob;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章