`
datamachine
  • 浏览: 163474 次
社区版块
存档分类
最新评论

简化SQL计算之竖排多层数据

 
阅读更多

   在我们经常处理的复杂SQL计算,常会遇到这种需求:请将分组数据按顺序拼为一列,并将分组和明细标识为不同的类型,如下所示:



 

  此类算法常见于为报表整理数据,SQL缺少有序集合的机制,需要分组和明细分别设置用于排序的计算列,再将分组和明细合并,最后做排序。实现这种算法,SQL往往要用非ansi标准的特殊函数去实现,代码比较难写,也不易理解。如果对多级分组进行拼凑,将更加难以实现。

用集算器实现此类算法时无需计算列,代码简洁易懂,下面用一个例子来说明。

计算目标

针对DVDCopy表,将门店及其对应的DVD拷贝拼为一列。

数据结构:

DVD表的前三个字段是:CopyIDDVDIDBID,分别代表DVD拷贝的编号、DVD的编号、门店的编号,DVD拷贝和门店是多对1的关系。部分数据如下:



 

计算结果应该是这样的:



 

集算器代码:



 

A1:从数据库读取数据,并按BID字段排序,结果如下:



 

A2=create(value,type)。建立一个空序表A2,有valuetype这两个字段。

A3-C4:遍历A1中的数据,并向A2追加BIDCopyID。具体算法是:如果当前记录的BID发生了变化B3中的代码),则在A2中追加一条门店记录(C3中的代码);修改B2为当前记录的BIDB4中的代码),以便在下一条记录中比较BID是否发生变化;追加一条DVD拷贝记录(C4中的代码)。

A3中的代码for A1表示对A1进行循环遍历,每次取A1中的一条记录,在循环体中可以用变量A3来访问当前记录,比如A3.BID。循环语句的作用范围可以直接用单元格缩进来表示,A3的作用范围即B3-C4

 

循环遍历后,最终计算结果会存储在A2中,如下图:



 

延伸:拼合多层分组

 

前面的案例只有两层:BIDCopyID,事实上BIDDVDIDCopyID可以组成三层数据。依靠类似的办法,集算器同样可以把三层数据拼成一列,代码如下:



 

计算结果如下所示:



 

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

  • 大小: 18.5 KB
  • 大小: 53.8 KB
  • 大小: 13.6 KB
  • 大小: 32.3 KB
  • 大小: 53.9 KB
  • 大小: 43.7 KB
  • 大小: 43 KB
  • 大小: 50.7 KB
0
0
分享到:
评论

相关推荐

    arcgis maplex竖排文字

    在GIS领域,ArcGIS是一款广泛使用的地理信息系统软件,它提供了丰富的功能来处理地图数据和创建高质量的地图产品。Maplex是ArcGIS的一个扩展模块,专门用于增强地图标注的灵活性和美观性。当我们需要创建地图时,...

    易语言 超级列表框 横排 and 竖排+数据库例子 源码

    在这个“易语言 超级列表框 横排 竖排+数据库例子 源码”中,我们可以深入探讨易语言如何处理用户界面组件,特别是超级列表框,并结合数据库进行数据展示。 首先,超级列表框是Windows应用程序中常见的控件,它允许...

    可以竖排操作的工具

    此工具是方便一些不好操作的竖排操作。多用于一些SQL语句中字符多个数据的字符型的‘’

    竖排按钮显示

    通过研究这个项目,你可以更深入地理解如何在WPF中实现竖排按钮显示,以及如何处理相关的文本变换和动态数据绑定。 总之,WPF的灵活性和强大的布局系统使得实现竖排按钮显示变得简单易行。通过StackPanel、Text...

    文字竖排编辑器

    【文字竖排编辑器】是一种特别的文本编辑工具,它不同于传统的横排文本,而是将文字按照垂直方向进行排列。这种编辑器在某些特定场景下非常有用,比如书法排版、古籍整理或是艺术设计等领域。本文将详细介绍该编辑器...

    实现竖排viewpager+listview动态加载数据

    "实现竖排ViewPager+ListView动态加载数据"这个项目就是针对这种需求的一个实践。 **ViewPager组件**: ViewPager是一个强大的Android视图组件,它允许用户水平滑动浏览多个页面。在本项目中,ViewPager被改造以...

    文本框文字竖排

    当我们谈论“文本框文字竖排”时,我们指的是将原本水平排列的文本调整为垂直方向显示,这种布局方式在中国传统文本中尤为常见,如古籍、书法作品等。在现代数字设计中,竖排文本也有其独特的应用场景,比如在创建...

    excel表格如何把横排变成竖排.doc

    如果我们需要将竖排的电子表格数据转换成横排,可以使用复制和选择性粘贴的方法。具体步骤如下: 1. 复制需要转换的竖排数据; 2. 右键点击目标单元格,选择“选择性粘贴”; 3. 在“选择性粘贴”窗口中选择“转置...

    HTML竖排菜单制作

    在网页设计中,HTML竖排菜单是构建用户友好界面的关键元素之一。这种菜单布局使得网站导航更为直观,尤其适用于移动设备或空间有限的界面。本文将深入探讨如何使用HTML和CSS来创建美观的竖排菜单。 首先,我们需要...

    竖排古文(论坛发帖好助手)

    【竖排古文(论坛发帖好助手)】是一个针对喜欢在论坛发表古风文章或者追求独特排版效果的用户而设计的工具。这个软件的主要功能是将输入的现代横排文字转换为传统的竖排古文格式,使得文章在视觉上更具有古典韵味,...

    竖排文字编辑

    竖排汉字编辑的类。可以在文本框中生成竖排的文字。

    android利用Paint在Canvas上实现竖排写字

    - 使用`paint.measureText()`计算文本的宽度,以便于调整下一行的起始位置。 - 可以结合`Matrix`类进一步调整文本的旋转、缩放等效果,以实现更多样化的绘制需求。 通过以上步骤,我们可以在Android应用中实现...

    android 字体竖排

    首先,我们来理解“字体竖排”这一概念。在常规的TextView中,文本默认是水平方向从左到右排列的。而“字体竖排”则是指文本竖直方向从上到下排列,这在中国古代的书法和一些特定的UI设计中比较常见。 为了实现这个...

    天若OCR竖排插件c-ex-.rar

    《天若OCR竖排插件c-ex-.rar:探索图像识别技术的新篇章》 在数字化时代,图像识别技术已经成为信息处理的重要组成部分,特别是在文档处理、文字识别和智能搜索等领域。"天若OCR竖排插件c-ex-"是针对这一需求而开发...

    Java输出竖排古典文字

    在Java编程中,实现竖排古典文字的输出是一项有趣且具有挑战性的任务。这涉及到字符的排列方式,以及如何在控制台或者图形用户界面中展示这些文字。在给定的【标题】"Java输出竖排古典文字"中,我们可以推测这篇博文...

    C#203文字竖排工具

    【C#203文字竖排工具】是一个基于C#编程语言开发的软件工具,主要用于实现文本的竖向排列展示。在传统的横排文本显示方式中,字符从左到右排列,而在竖排模式下,字符则从上到下依次排列,这在处理一些特定的文本...

    MFC文字从右向左竖排显示

    在MFC(Microsoft Foundation Classes)框架中,实现文字从右向左竖排显示涉及对文本布局和方向的深入理解。这种显示方式常见于阿拉伯语、希伯来语等语言,但在处理中文时需要特别定制。这里我们将探讨如何在MFC应用...

    流式布局,竖排RadioButton

    在这个自定义的FlowLayout中,我们重写了`onMeasure()`方法,通过遍历子视图计算总高度,当一行的高度超过最大限制时,开始新的一行。这样,RadioButton就会按照竖直方向进行排列。 接下来,在XML布局文件中使用这...

    A4对折WORD竖排小册子模板

    A4对折WORD竖排小册子模板。A4页面以word排版设计,仿古籍文字竖排,自右向左阅读。一页分左右两版,页码自动变化。配上适合古书用的字体,可打印仿古书籍阅读。

    css实现文字竖排效果.rar

    本教程将详细介绍如何使用CSS实现文字竖排效果。 首先,我们可以使用`writing-mode`属性来改变文本的书写方向。这个属性允许我们将文本从左到右(默认的`lr-tb`),改为从右到左(`rl-tb`),或者从上到下(`tb-rl`...

Global site tag (gtag.js) - Google Analytics