日期:2014-05-17  浏览次数:21266 次

某两列值相同,则把数据记录合并成一条,请教怎么完成?
Oracle环境

原始数据是比较复杂的语句查询出来,不能修改原始语句。

表结构

col1   col2               col3               col4    col5   col6     col7 ......
1     DB12102601928      001-000193-00        1       A      100
2     DB12102601928      001-000193-00        0       B      80
3     DB12102601928      001-000193-00        1       B      45
4     JB12102601928      002-000193-00        0       C      50
5     HB12102601928      003-000193-00        1       B      80

如果col2和col3相同则把记录合并成一条,其中col6记录需要汇总,结果如下:
col1   col2               col3               col4    col5   col6     col7 ......
1     DB12102601928      001-000193-00        1       A      225
4     JB12102601928      002-000193-00        0       C      50
5     HB12102601928      003-000193-00        1       B      80

谢谢。

------最佳解决方案--------------------

select min(col1),col2,col3,sum(col4),min(col5),sum(col6)
  from t
group by col2,col3;


------其他解决方案--------------------
--col1, col4,col5随便取值么?

select min(col1), col2, col3, min(col4), min(col5), sum(col6) from t group by col2, col3;

------其他解决方案--------------------
其他列的数据怎么取?