+ -
当前位置:首页 → 问答吧 → 数据分组查询处理求解

数据分组查询处理求解

时间:2011-11-24

来源:互联网

表结构如下:
FNO FN FJD FMoney Fcode
1 1 J 500 6111
1 2 J 300 6111
1 3 D 800 1011
2 1 J 500 1011
2 2 J 500 1012
2 3 D 1000 6111
3 1 J 500 6111
3 2 D 500 1011
4 1 J 300 1002
4 1 D 300 4001 
已知:FNO 为每组数的编号,FN为分录号;每组FMoney 按J=D持平;
要求:将每组数中Fcode 为6111的借贷方向改变;即将6111的FJD方向 改为 D,同组非6111的改为J ;
每组数中没有6111的不变,如第4组,不变;

如题求解;期待大侠的解答...

作者: java_mi   发布时间: 2011-11-24

SQL code
with t as
(
select 1 fno , 1 fn , 'J' fjd , 500  fmoney , 6111 fcode from dual union all
select 1 fno , 2 fn , 'J' fjd , 300  fmoney , 6111 fcode from dual union all
select 1 fno , 3 fn , 'D' fjd , 800  fmoney , 1011 fcode from dual union all
select 2 fno , 1 fn , 'J' fjd , 500  fmoney , 1011 fcode from dual union all
select 2 fno , 2 fn , 'J' fjd , 500  fmoney , 1012 fcode from dual union all
select 2 fno , 3 fn , 'D' fjd , 1000 fmoney , 6111 fcode from dual union all
select 3 fno , 1 fn , 'J' fjd , 500  fmoney , 6111 fcode from dual union all
select 3 fno , 2 fn , 'D' fjd , 500  fmoney , 1011 fcode from dual union all
select 4 fno , 1 fn , 'J' fjd , 300  fmoney , 1002 fcode from dual union all
select 4 fno , 1 fn , 'D' fjd , 300  fmoney , 4001 fcode from dual
)
select fno , fn , 'D' fid , fmoney , fcode from t where fcode = 6111
union all
select fno , fn , 'J' fid , fmoney , fcode from t where fcode <> 6111 and exists(select 1 from t m where m.fcode = 6111 and m.fno = t.fno)
union all
select t.* from t where not exists(select 1 from t m where m.fcode = 6111 and m.fno = t.fno)
order by fno , fn

/*
       FNO         FN F     FMONEY      FCODE
---------- ---------- - ---------- ----------
         1          1 D        500       6111
         1          2 D        300       6111
         1          3 J        800       1011
         2          1 J        500       1011
         2          2 J        500       1012
         2          3 D       1000       6111
         3          1 D        500       6111
         3          2 J        500       1011
         4          1 J        300       1002
         4          1 D        300       4001

10 rows selected.
*/

作者: dawugui   发布时间: 2011-11-25