怎么循环比较字段内容的大小? 这个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 IN