在我们经常处理的复杂SQL计算,常会遇到这种需求:请将分组数据按顺序拼为一列,并将分组和明细标识为不同的类型,如下所示:
此类算法常见于为报表整理数据,SQL缺少有序集合的机制,需要分组和明细分别设置用于排序的计算列,再将分组和明细合并,最后做排序。实现这种算法,SQL往往要用非ansi标准的特殊函数去实现,代码比较难写,也不易理解。如果对多级分组进行拼凑,将更加难以实现。
用集算器实现此类算法时无需计算列,代码简洁易懂,下面用一个例子来说明。
计算目标
针对DVDCopy表,将门店及其对应的DVD拷贝拼为一列。
数据结构:
DVD表的前三个字段是:CopyID、DVDID、BID,分别代表DVD拷贝的编号、DVD的编号、门店的编号,DVD拷贝和门店是多对1的关系。部分数据如下:
计算结果应该是这样的:
集算器代码:
A1:从数据库读取数据,并按BID字段排序,结果如下:
A2:=create(value,type)。建立一个空序表A2,有value和type这两个字段。
A3-C4:遍历A1中的数据,并向A2追加BID和CopyID。具体算法是:如果当前记录的BID发生了变化(B3中的代码),则在A2中追加一条门店记录(C3中的代码);修改B2为当前记录的BID(B4中的代码),以便在下一条记录中比较BID是否发生变化;追加一条DVD拷贝记录(C4中的代码)。
A3中的代码for A1表示对A1进行循环遍历,每次取A1中的一条记录,在循环体中可以用变量A3来访问当前记录,比如A3.BID。循环语句的作用范围可以直接用单元格缩进来表示,A3的作用范围即B3-C4。
循环遍历后,最终计算结果会存储在A2中,如下图:
延伸:拼合多层分组
前面的案例只有两层:BID和CopyID,事实上BID、DVDID、CopyID可以组成三层数据。依靠类似的办法,集算器同样可以把三层数据拼成一列,代码如下:
计算结果如下所示:
另外,集算器可被报表工具或java程序调用,调用的方法也和普通数据库相似,使用它提供的JDBC接口即可向java主程序返回ResultSet形式的计算结果,具体方法可参考相关文档。
相关推荐
在GIS领域,ArcGIS是一款广泛使用的地理信息系统软件,它提供了丰富的功能来处理地图数据和创建高质量的地图产品。Maplex是ArcGIS的一个扩展模块,专门用于增强地图标注的灵活性和美观性。当我们需要创建地图时,...
在这个“易语言 超级列表框 横排 竖排+数据库例子 源码”中,我们可以深入探讨易语言如何处理用户界面组件,特别是超级列表框,并结合数据库进行数据展示。 首先,超级列表框是Windows应用程序中常见的控件,它允许...
此工具是方便一些不好操作的竖排操作。多用于一些SQL语句中字符多个数据的字符型的‘’
通过研究这个项目,你可以更深入地理解如何在WPF中实现竖排按钮显示,以及如何处理相关的文本变换和动态数据绑定。 总之,WPF的灵活性和强大的布局系统使得实现竖排按钮显示变得简单易行。通过StackPanel、Text...
【文字竖排编辑器】是一种特别的文本编辑工具,它不同于传统的横排文本,而是将文字按照垂直方向进行排列。这种编辑器在某些特定场景下非常有用,比如书法排版、古籍整理或是艺术设计等领域。本文将详细介绍该编辑器...
总的来说,SQL Server中的纵表与横表转换是一个强大的工具,它能够帮助我们更好地管理和利用数据,提高数据的可读性和分析效率。无论是在报表设计、数据清洗还是复杂查询中,灵活运用这些转换技巧都能带来极大的便利...
"实现竖排ViewPager+ListView动态加载数据"这个项目就是针对这种需求的一个实践。 **ViewPager组件**: ViewPager是一个强大的Android视图组件,它允许用户水平滑动浏览多个页面。在本项目中,ViewPager被改造以...
当我们谈论“文本框文字竖排”时,我们指的是将原本水平排列的文本调整为垂直方向显示,这种布局方式在中国传统文本中尤为常见,如古籍、书法作品等。在现代数字设计中,竖排文本也有其独特的应用场景,比如在创建...
如果我们需要将竖排的电子表格数据转换成横排,可以使用复制和选择性粘贴的方法。具体步骤如下: 1. 复制需要转换的竖排数据; 2. 右键点击目标单元格,选择“选择性粘贴”; 3. 在“选择性粘贴”窗口中选择“转置...
在网页设计中,HTML竖排菜单是构建用户友好界面的关键元素之一。这种菜单布局使得网站导航更为直观,尤其适用于移动设备或空间有限的界面。本文将深入探讨如何使用HTML和CSS来创建美观的竖排菜单。 首先,我们需要...
竖排汉字编辑的类。可以在文本框中生成竖排的文字。
综上所述,【竖排古文(论坛发帖好助手)】在传统文化与现代科技之间搭建起了一座桥梁,它不仅让追求复古风格的用户能轻易实现竖排古文的排版,同时提升了论坛文章的艺术感和阅读体验,更是对传统文化的一种传承与...
- 使用`paint.measureText()`计算文本的宽度,以便于调整下一行的起始位置。 - 可以结合`Matrix`类进一步调整文本的旋转、缩放等效果,以实现更多样化的绘制需求。 通过以上步骤,我们可以在Android应用中实现...
首先,我们来理解“字体竖排”这一概念。在常规的TextView中,文本默认是水平方向从左到右排列的。而“字体竖排”则是指文本竖直方向从上到下排列,这在中国古代的书法和一些特定的UI设计中比较常见。 为了实现这个...
《天若OCR竖排插件c-ex-.rar:探索图像识别技术的新篇章》 在数字化时代,图像识别技术已经成为信息处理的重要组成部分,特别是在文档处理、文字识别和智能搜索等领域。"天若OCR竖排插件c-ex-"是针对这一需求而开发...
在Java编程中,实现竖排古典文字的输出是一项有趣且具有挑战性的任务。这涉及到字符的排列方式,以及如何在控制台或者图形用户界面中展示这些文字。在给定的【标题】"Java输出竖排古典文字"中,我们可以推测这篇博文...
【C#203文字竖排工具】是一个基于C#编程语言开发的软件工具,主要用于实现文本的竖向排列展示。在传统的横排文本显示方式中,字符从左到右排列,而在竖排模式下,字符则从上到下依次排列,这在处理一些特定的文本...
在MFC(Microsoft Foundation Classes)框架中,实现文字从右向左竖排显示涉及对文本布局和方向的深入理解。这种显示方式常见于阿拉伯语、希伯来语等语言,但在处理中文时需要特别定制。这里我们将探讨如何在MFC应用...
在这个自定义的FlowLayout中,我们重写了`onMeasure()`方法,通过遍历子视图计算总高度,当一行的高度超过最大限制时,开始新的一行。这样,RadioButton就会按照竖直方向进行排列。 接下来,在XML布局文件中使用这...
A4对折WORD竖排小册子模板。A4页面以word排版设计,仿古籍文字竖排,自右向左阅读。一页分左右两版,页码自动变化。配上适合古书用的字体,可打印仿古书籍阅读。