如何循环比较字段内容的大小? 这个SQL语句该如何写.只有40分了全奉送,很急

怎么循环比较字段内容的大小?这个SQL语句该怎么写.只有40分了全奉送,很急.表名TABLE1ID业务号材料名称页号

怎么循环比较字段内容的大小? 这个SQL语句该怎么写.只有40分了全奉送,很急.
表名TABLE1
ID           业务号       材料名称           页号
105           1                   申请表               1
106           1                   申请表               2
107           1                   申请表               3
108           1                   审核表               4
109           1                   审核表               5
110           1                   身份证               6
111           1                   证明材料           7
112           2       .......
113           3       .......


即业务号相同的行中,某种材料名称可能有好几页

现在想做报表打印某个业务号的目录,比如想打印业务号为1的目录如下

                申请表             1-3
                审核表             4-5
                身份证               6
                证明材料           7      
这段代码该怎么写?

在VB论坛中我用网友教的方法
  select   材料名称,TO_CHAR(min(页号))   ||   '- '   ||   TO_CHAR(max(页号))     from   table1   where   业务号=1     group   by   材料名称   ORDER   BY   min(页号)
  得到如下结果
                申请表             1-3
                审核表             4-5
                身份证             6-6     '我只想要的是   6
                证明材料         7-7     '我只想要的是   7
怎么改写这个语句呢,请大家帮我,很急。谢谢!

[解决办法]
用UNION ALL 试试 就是比较麻烦
[解决办法]
不用语句,用存储过程就比较方便
游标定义成 select 材料名称 from table1 where 业务号=1 group by 材料名称
之后 循环
select 材料名称,TO_CHAR(min(页号)) || '- ' || TO_CHAR(max(页号)) from table1 where 业务号=1 group by 材料名称 ORDER BY min(页号)
把TO_CHAR(min(页号)) || '- ' || TO_CHAR(max(页号))放到一个变量里面
加个IF判断TO_CHAR(min(页号))和TO_CHAR(max(页号))是否相等
相等后就取TO_CHAR(max(页号)
之后把这个结果插入一个临时表里面

最后select * from 临时表

效率比较低
:)

[解决办法]
看下面:

CREATE TABLE PRINTTBL(ID NUMBER, SEQ NUMBER, NAME VARCHAR2(50), PAGE NUMBER)
/

INSERT INTO PRINTTBL


SELECT
105,1, '申请表 ',1 FROM DUAL UNION SELECT
106,1, '申请表 ',2 FROM DUAL UNION SELECT
107,1, '申请表 ',3 FROM DUAL UNION SELECT
108,1, '审核表 ',4 FROM DUAL UNION SELECT
109,1, '审核表 ',5 FROM DUAL UNION SELECT
110,1, '身份证 ',6 FROM DUAL UNION SELECT
111,1, '证明材料 ',7 FROM DUAL;
/

SELECT NAME, DECODE(COUNT(SEQ),1, TO_CHAR(MIN(PAGE)),TO_CHAR(MIN(PAGE)) || '- ' || TO_CHAR(MAX(PAGE)))
FROM PRINTTBL
GROUP BY SEQ,NAME;
/
[解决办法]
其实只要稍微改下就可以满足你的要求了:
select 材料名称,TO_CHAR(min(页号)) || '- ' || TO_CHAR(max(页号)) from table1 where 业务号=1 group by 材料名称 ORDER BY min(页号)
改为:
select 材料名称,case when min_页号=max_页号 then to_char(min_页号) when min_页号 <max_页号 then to_char(min_页号)|| '- '||to_char(max_页号) end as result
from (
select 材料名称,TO_CHAR(min(页号)) as min_页号, TO_CHAR(max(页号)) as max_页号 from table1 where 业务号=1 group by 材料名称 ORDER BY min(页号))

BTW:真不习惯列名用汉字。。。