问题来源: http://www.itpub.net/showthread.php?threadid=281465&pagenumber=
原文标题:1 个很难的SQL问题
表 t0 (f0 number(2)) ,f0列的数据为从1至9。
需要提取 1,2,3......7,8,9 中相加等于15 的组合。
比如:
1 2 3 4 5
6 9
7 8
3 5 7
。。。。。。。。。。。
解决方法:
假设:
只允许取不重复的数字
分析:
在前面的假设情况下, 要组成15, 极端情况需要 1 2 3 4 5五个数字, 因此不必考虑5个以上的数字组成
预备工作:
预先插入一条记录0
insert into t0 values (0);
commit;
当然, 不做这一步也可以. 只要将下面的语句中所有的t0 替换为 (select * from t0 union select 0 from dual)即可, 只是使得语句变得不太简洁.
SQL> select * from t0; F0 --- 1 2 3 4 5 6 7 8 9 0 10 rows selected. real: 10
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/32/viewspace-184169/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/32/viewspace-184169/