copy Bookmark http://space.itpub.net/4227
上一篇 / 下一篇 2008-03-07 16:18:15 / 个人分类:ORACLE
今天在PUB里面看到一个帖子:http://www.itpub.net/thread-949571-1-1.html。问题本身并不复杂,不过想借这个问题简单描述一下求解的思路。
上一篇文章中已经通过硬编码方式的SQL实现,下面通过函数来构造通用解。
一个复杂问题的求解过程(一):http://yangtingkun.itpub.net/post/468/456641
之所以说上一篇文章中给出的SQL是硬编码方式,是由于在写SQL的时候参考了T表中记录条数。
由于构造子查询个数需要和表中的记录数相等,因此这里写SQL的时候构造了5个子查询的连接。而如果表中的记录发生变化,则这个SQL就不正确了,因此这种没有通用性的SQL是不符合要求的。
但是对于SQL来说,很难动态确定表连接的个数。这里最简单的方法就是通过一个PL/SQL来实现。通过PL/SQL根据T表中的记录情况,来动态构造这个查询的SQL语句。
SQL> WITH T1 AS