- 论坛徽章:
- 0
|
10可用积分
表A如下:
A B C D E F G
2 5 2 991 128 1656 100
2 6 21 990 127 1656 100
2 7 35 861 95 574 100
3 8 2 991 128 1656 100
2 9 35 861 95 574 100
1 5 21 990 127 1656 100
1 3 35 861 95 574 100
2 2 35 861 95 574 100
3 1 21 990 127 1656 100
3 3 35 861 95 574 100
3 2 61 1325 74 864 100
1 1 61 1325 74 864 100
1 7 2 991 128 1656 100
现在要求对C, D, E, F 这4个字段相同的值分组排序,然后根据A字段的值进行合并
也就是说假如我运行如下语句:
select * from (select C, D, E, F, (Count(*)) As Num from table group by C, D, E, F) t where Num > 1 的话,会产生一个这样的结果
C D E F Num
2 991 128 1656 3
21 990 127 1656 3
35 861 95 574 5
61 1325 74 864 2
也就是会有4个组,然后接下来就是对这4个组根据A字段的值进行行合并,而A字段的值经过排序以后会是
1
3
或者
1
2
3
或者
1
2
2
2
3
的情况,从而产生4个新的行再插入原表中,而合并的规则是对A字段为1的行取A,B,C,D,E的值,对为3的行取G的值,而F的值则是每行F字段的累加值(打个比方,假如对
C D E F Num
2 991 128 1656 3
这个分组,那么F的值将会是1,2,3这3行的F的值的累加(1656+1656+1656)
最后把这4行新行产生以后更新A字段的值为4然后插入原表,不知道我表达得够清楚不,请大家指导
这样的SQL语句该如何来写? |
|