如何根据特定条件将两个表合并在一起 - 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;
我有一个 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;