如何根据特定条件将两个表合并在一起 - Oracle SQL

How to merge two tables together given a specific criteria - Oracle SQL

我有一个 table 看起来像这样:

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

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

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;