Oracle -分组依据和维护Oracle记录

oxf4rvwz  于 7个月前  发布在  Oracle
关注(0)|答案(1)|浏览(66)

如何维护所有记录分组并将其存储在单独的表中。
基表:


的数据
在对COLA、COLB上的数据进行分组并对COLC进行求和之后,

Select COLA,COLB,SUM(COLC) 
FROM TAB2

字符串
然后使用序列生成密钥。



需要维护的输出如下。考虑到有100列要执行group by,我们如何维护这种关系
选项1:尝试下面的查询来获得结果,但它看起来很有效。

Select TAB1.KEY , TAB2.KEY 
FROM TAB1 
INNER JOIN TAB2 ON TAB1.COLA=TAB2.COLA 
AND TAB2.COLB=TAB2.COLB



选项2:当对数据进行分组和求和时,可以在clob列中以逗号分隔存储键,然后在不同的sql中再次将其断开。

RTRIM(XMLAGG(XMLELEMENT(E,KEY,',').EXTRACT('//text()') ).GetClobVal(),',')

2w3rbyxf

2w3rbyxf1#

所以,如果你需要连接N列,其中一些碰巧是空值,最好使用standard_hash进行连接。比如:

from table_1 a
join table_2 b on (
  standard_hash(a.col||'|'||a.col2||...||'|'||a.coln, 'SHA512')=
  standard_hash(b.col||'|'||b.col2||...||'|'||b.coln, 'SHA512')
  )

字符串
这个函数也可以用来创建一个索引。这就是我所建议的。我看到了一个大问题,关于包含sum的表。你能确定当第一个表上有一些插入,更新或删除时,它会同步吗?我宁愿创建一个视图或物化视图。但是,当你有大量的数据时,可能会有问题。有分区吗?嗯,你应该比我更了解你的生意……

相关问题