欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

简化SQL式计算之固定排序

程序员文章站 2022-05-12 13:00:32
...

   固定排序不是按照某个字段升序或降序排序,而是有着固定的顺序,比如按照2,3,1的顺序排序,或者按照"DSGC","TAS","GC","HU"的顺序来排序。

   如果允许在数据库建一张表来存储依据,那就可以用join语句来实现排序。但很多时候排序依据是变动的,或者数据库不能建表,这时就需要先unionjoin,或者用decode函数。排序依据比较短的时候可以这样做,但排序依据有时候很长,会导致手工书写很长的union字符串和decode字符串,出错率会很高。

   我们用例子来了解一下集算器的实现方式。

   表LIQUORS记录着大量的酒品库存,现在需要按照固定的LID顺序排序,比如“2,1,3,4,5...”。表LIQUORS的部分数据如下:


简化SQL式计算之固定排序
            
    
    博客分类: Java相关DB sql语句固定排序join集算器示例 
 

集算器代码:


简化SQL式计算之固定排序
            
    
    博客分类: Java相关DB sql语句固定排序join集算器示例 
 

A1:从数据库取数,部分结果如下:


简化SQL式计算之固定排序
            
    
    博客分类: Java相关DB sql语句固定排序join集算器示例 

A2=A1.align@s([2,1,3,4,5], LID)这句代码将A1对象中的LID字段,按照2,1,3,4,5的顺序排列,结果如下:


简化SQL式计算之固定排序
            
    
    博客分类: Java相关DB sql语句固定排序join集算器示例 
 

上述排序依据可以是外部参数,比如定义一个参数arg1,将A2中的代码改为:=A1.align(arg1, LID)。执行脚本(也可以通过JAVA或报表调用),在参数界面输入:[2,1,3,4,5],如下:


简化SQL式计算之固定排序
            
    
    博客分类: Java相关DB sql语句固定排序join集算器示例 
 

计算后结果和之前完全一样。

 

集算器不仅能解决固定排序的问题,还能进行固定分组,可参考《集算器简化SQL式计算之固定分组》  

 

另外,集算器可被报表工具或java程序调用,调用的方法也和普通数据库相似,使用它提供的JDBC接口即可向java主程序或报表工具返回ResultSet形式的计算结果,具体方法可参考相关文档。

  • 简化SQL式计算之固定排序
            
    
    博客分类: Java相关DB sql语句固定排序join集算器示例 
  • 大小: 40.7 KB
  • 简化SQL式计算之固定排序
            
    
    博客分类: Java相关DB sql语句固定排序join集算器示例 
  • 大小: 10.9 KB
  • 简化SQL式计算之固定排序
            
    
    博客分类: Java相关DB sql语句固定排序join集算器示例 
  • 大小: 34.6 KB
  • 简化SQL式计算之固定排序
            
    
    博客分类: Java相关DB sql语句固定排序join集算器示例 
  • 大小: 35 KB
  • 简化SQL式计算之固定排序
            
    
    博客分类: Java相关DB sql语句固定排序join集算器示例 
  • 大小: 19.5 KB