Sql 查询将特定键的多个记录合并为单个记录

标签 sql oracle pivot oracle-adf

我遇到了一个困难的要求(我是sql新手,要求也可以很简单),其中我需要将表中特定键可用的多个记录合并为单个记录(我想显示它)单行)。

例如,假设我有表 ABC 和以下数据

表ABC

  CODE    TRANS_CODE     AMOUNT
    01      01            123
    01      02            456
    01      03            678
    01      04            889

这里我想将 CODE=01 的所有记录显示为单行,如下所述

 CODE       AMOUNT1    AMOUNT2   AMOUNT3  AMOUNT4
  01          123        456      678       889

这意味着对于 CODE=01 和 TRANS_CODE=01 ,则 AMOUNT 的值需要显示在 AMOUNT1 列中,类似地,对于 CODE=01 和 TRANS_CODE=02 ,则 AMOUNT 的值需要显示在 AMOUNT2 列中,等等。

注意:只有 5 个 TRANS_CODE(01,02,03,04,05),因此每个 CODE 将有 5 条记录,我需要像上面提到的那样合并到单个记录中。

如果我知道如何为此构建 sql 查询,那就太好了。我需要在 Oracle ADF 中构建它。

提前致谢。

最佳答案

您可以通过条件聚合来做到这一点:

select code,
       max(case when trans_code = '01' then amount end) as amount1,
       max(case when trans_code = '02' then amount end) as amount2,
       max(case when trans_code = '03' then amount end) as amount3,
       max(case when trans_code = '04' then amount end) as amount4,
       max(case when trans_code = '05' then amount end) as amount5
from ABC t
group by code;

关于Sql 查询将特定键的多个记录合并为单个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31905929/

相关文章:

sql - 我需要在 T-SQL 数据透视查询中更改哪些内容才能实现此特定输出?

python - Pandas 数据透视表 : columns order and subtotals

javascript - 将 JSON 操作为表布局的特定行

php - 内联 SQL 和从 View 中选择之间的区别

sql - 如何从两个 SQL 表中获取不匹配的记录?

sql - 在不同的数据库帐户下执行存储的 PL/SQL 过程

sql - 用新条目更新表列

mysql - 如何在 MySQL 中正确使用索引

sql - 我应该如何保持准确记录汇总多个表格?

sql - 这可以在 Oracle SQL 中计算 p 值吗?