gpt4 book ai didi

sql - 将表中的多行分组到列中

转载 作者:行者123 更新时间:2023-12-05 00:01:56 26 4
gpt4 key购买 nike

我有如下两个表。

表一

+------+------+------+------+
| Col1 | Col2 | Col3 | Col4 |
+------+------+------+------+
| 1 | 1.5 | 1.5 | 2.5 |
| 1 | 2.5 | 3.5 | 1.5 |
+------+------+------+------+

表2

+------+--------+
| Col1 | Col2 |
+------+--------+
| 1 | 12345 |
| 1 | 678910 |
+------+--------+

我想要如下结果。

+------+------+------+------+-------+--------+
| Col1 | Col2 | Col3 | Col4 | Col5 | Col6 |
+------+------+------+------+-------+--------+
| 1 | 4 | 5 | 4 | 12345 | 678910 |
+------+------+------+------+-------+--------+

这里的 Col2、Col3 和 Col4 是表 1 中 Col2、3、4 的值的聚合。表 2 中的行被转置为结果中的列。

我使用 Oracle 11G 并尝试了 PIVOT 选项。但我无法汇总表 1 中第 2、3、4 列的值。

Oracle 中是否有任何功能可以提供直接解决方案而无需任何脏工作?

提前致谢。

最佳答案

因为您在第二个表中总是只有 2 条记录,所以简单的分组和连接就可以了。因为我没有表格,所以我使用 CTE 和内联 View

with cte1 as (
select 1 as col1 , 1.5 as col2 , 1.5 as col3, 2.5 as col4 from dual
union all
select 1 , 2.5 , 3.5 , 1.5 fom dual
) ,
cte2 as (
select 1 as col1 , 12345 as col2 fom dual
union all
select 1,678910 fom dual )

select* from(
(select col1,sum(col2) as col2 , sum(col3) as col3,sum(col4) as col4
from cte1 group by col1) as x
inner join
(select col1 ,min(col2) as col5 ,max(col2) as col from cte2
group by col1
) as y
on x.col1=y.col1)

关于sql - 将表中的多行分组到列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22878188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com