我遇到了一个困难的要求(我是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/