表名TABLE1
业务号   材料名称     页号
1         申请表       1
1         早请表       2
1         申请表       3
1         审核表       4
1         审核表       5
1         身份证       6
1         证明材料     7
2  ......
3  ....
即业务号相同的行中,某种材料名称可能有好几页现在想做报表打印其目录,比如想打印业务号为1的目录        申请表      1-3
        审核表      4-5
        身份证       6
        证明材料     7   
这段代码该怎么写?

解决方案 »

  1.   

    select 材料名称,min(页号)+'-'+max(页号) from table1 group by 业务号,材料名称 order by 业务号,材料名称
      

  2.   

    access:select 材料名称,iif(min(format(页号))=max(format(页号)),min(fromat(页号)),min(format(页号))+'-'+max(format(页号))) as 页号
    from tb
    group by  材料名称
    order by iif(min(format(页号))=max(format(页号)),min(fromat(页号)),min(format(页号))+'-'+max(format(页号))) SQL数据库,改format函数为cast
      

  3.   

    谢谢各位,
    1 我每次打印目录,只对某一个业务号来做,即语句中必有 where 业务号=**的条件,
       所以不需 group by 业务号
    2 我是ORACLE数据库,min(页号)+'-'+max(页号) 提示错误"无效数字"
      怎么把它们联到一起呢?
      

  4.   

    忘记转换了
    convert(varchar(10),min(页号))+'-'+convert(varchar(10),max(页号))
      

  5.   

    ORACLE中好像用CONVERT不行吧?
    ORACLE中怎么把两个字符串连接起来? TO_CHAR(min(页号)) + '-' + TO_CHAR(max(页号))也不行
      

  6.   

    ORACLE数据库,我刚才用to_char(min(页号)) || '-' || to_char(max(页号)) 可以连在一起了,但出来的结果是
           申请表      1-3
           审核表      4-5
           身份证      6-6  '我想要的是只有一个6
           证明材料    7-7  '我想要的是只有一个7 怎么办呢? 请帮我!
      

  7.   

    要加上判断,ORACLE没用过,如果可以用case的话:select 材料名称,
          case when min(页号)=max(页号) 
          then min(页号) 
          else to_char(min(页号)) || '-' || to_char(max(页号)) end
    from tb
    group by  材料名称
      

  8.   

    ORACLE数据库 语法不熟 但是基本都可以找到对应的函数 来替换