我有两个要合并的表,如下所示:
C1 C2 V1 V2
1 A 3 5
2 B 4 6我想从第二个表追加所有行到第一个表中的每一行。我想通过这个链接实现一些东西:
C1 C2 C3 C4 C5 C6
1 A 3 5 4 6
2 B 3 5 4 6 这可以在OracleDB中完成吗?或者,我应该执行两个查询并将它们合并到我的代码中。
发布于 2018-05-23 23:05:15
看起来你想要这样的窗口函数
select min(c1) over () c1, min(c2) over () c2, max(c2) over () c3
from table t;发布于 2018-05-23 23:32:23
嗯。。。这很奇怪。如果第二个表中有两行,则可以使用条件聚合:
select t1.*, t2.*
from t1 cross join
(select max(case when seqnum = 1 then v1 end) as v1_1,
max(case when seqnum = 1 then v2 end) as v2_1,
max(case when seqnum = 2 then v1 end) as v1_2,
max(case when seqnum = 2 then v2 end) as v2_2
from (select t2.*, row_number() over (order by null) as seqnum
from t2
) t2
) t2;您可以手动将其扩展到更多行。
如果您的行数不确定,则无法使用简单的SQL查询执行您想要的操作。一条SELECT语句有一组固定的行。您可以使用dynamic SQL (execute immediate)来做您想做的事情。
或者,您可能只是想对XML值使用另一种表示,比如table2、XML值或嵌套表。
https://stackoverflow.com/questions/50491677
复制相似问题