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

SQL计算之记录合并

    博客分类:
  • DB
阅读更多

   问题来源:http://bbs.csdn.net/topics/390991336

   表1T1)中存储了单独的idname字段,部分源数据如下:

   id    name

   1     a

   2     b

   3     c

   4     d

   5     e

 

   2T2)中存储了多个id组成的ids字段,其值如下:

   ids

   1,2,3

   4,3

   1,2,3

 

       现在要根据T1中的idname,将T2中的ids转化为对应的多个name组成的记录,比如上述T2转换后的结果为:

   a,b,c

   d,c
   a,b,c

 

   集算器实现代码如下:



 

   A1A2:执行SQLT1T2的数据取出。

   A3:循环A2中的记录,将每个ids值转为序列后,与T1中的记录匹配得到name序列,而后转换为逗号分隔的记录。结果如下:



 

   上述写法要假定id为整数且连续,如果id不连续,那么A3的写法可以改为:

         A3>A1.primary(id)

   A4=A2.(ids.array().(A1.find(~).name ).string@d())

 

       SQL实现这个问题需要用到子查询生成一个唯一分组号,再用较复杂的JOIN实现,以MySQL为例写成这样:

       select group_concat(t1.name) names from(

              select @row:=@row+1 as gid,ids from t2,(SELECT @row :=0 ) r

) t2 left join t1 on find_in_set(t1.id,t2.ids) group by t2.gid

 

         而且,这个SQL只能用于T2ids无重复值时,如果有重复值结果只会保留一个,比如:“2,1,2,3”算完的结果是”a,b,c”而不是”b,a,b,c”,相对来讲,集算器的语法要更直观易懂且适用面更广

 

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

  • 大小: 15.7 KB
  • 大小: 6.5 KB
0
0
分享到:
评论

相关推荐

    SQL 合并多行记录的相同字段值

    然后遍历DataTable,针对每一行数据,再次查询数据库以获取与之相关的多条记录,将这些记录内容合并后更新回原始数据行。这种方法虽然直观,但如果数据量较大,频繁地打开和关闭数据库连接会导致性能下降。 第二种...

    SQL学习笔记+记录sql各种应用

    2. JOIN操作:用于将两个或更多表的数据合并在一起,有INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN等类型,根据匹配条件连接相关记录。 3. 分页查询:LIMIT关键字用于获取结果集的一部分,通常与OFFSET配合使用,...

    水电管理系统(含有水晶报表,打印,SQL的报表合并,计算,数据备份,恢复。月结处理)

    SQL的报表合并和计算是水电管理系统中的另一个重要部分。通过SQL语言,系统能够高效地整合来自不同数据库的数据,进行复杂计算,如统计每户的月度用水电量、计算总费用、生成对比分析等。这有助于管理者快速掌握整体...

    SQL合并查询用法之探讨.pdf

    SQL合并查询是数据库管理和数据处理中的一个核心概念,它允许我们通过单条SQL语句查询来自多个表的数据。合并查询通常利用子查询来实现,子查询可以嵌套在主查询内部,也可以作为条件表达式的一部分。 在本文中,...

    SQL进销存库存盘点

    例如,通过JOIN操作合并实物盘点结果和系统数据: ```sql SELECT p.product_name, i.quantity AS system_stock, p.actual_stock AS physical_stock FROM products p JOIN inventory i ON p.product_id = i....

    经典SQL脚本大全

    │ │ 2.5.4 计算工作时间的函数.sql │ │ │ └─其他 │ 交叉表.sql │ 任意两个时间之间的星期几的次数-横.sql │ 任意两个时间之间的星期几的次数-纵.sql │ 复杂年月处理.sql │ 统计--交叉表+日期+优先.sql ...

    sql processing with sas system(SAS中sql应用)

    随着大数据时代的到来,SAS也不断扩展其功能以适应更复杂的数据处理需求,其中之一就是SQL(Structured Query Language)的集成使用。 #### 二、SAS中的SQL:结构化查询语言简介 SAS中集成的SQL功能使得用户能够在...

    arcgis中的sql语句

    - **Field Calculator**:通过Field Calculator使用SQL语句可以实现属性字段的计算和更新,甚至进行表间的关联计算。 - **VBE环境下ADO方式执行SQL**:在Visual Basic for Applications (VBA)环境中,使用ActiveX ...

    SQL Cookbook.pdf

    7. 联接查询:JOIN操作用于将两个或更多表的数据合并在一起。包括INNER JOIN(只返回匹配的记录)、LEFT JOIN(返回左表所有记录及右表匹配的记录)、RIGHT JOIN(返回右表所有记录及左表匹配的记录)和FULL OUTER ...

    sql即查即用资料

    6. **连接(JOIN)操作**:LEFT JOIN、INNER JOIN、RIGHT JOIN和FULL OUTER JOIN等用于合并来自多个表的数据,实现复杂的数据查询。 7. **子查询**:在SELECT、FROM或WHERE子句中嵌套查询,用于处理更复杂的逻辑。 ...

    ACCESS SQL使用大全

    “SQL功能与特性.doc”深入探讨了SQL的高级功能,如JOIN操作,用于合并两个或多个表的数据;WHERE子句,用于筛选满足特定条件的记录;GROUP BY和HAVING,用于数据分组和过滤;以及ORDER BY,用于排序结果。此外,...

    SQLServer实用SQL语句大全

    2. 子查询:嵌套在其他SQL语句中的查询,可以用于过滤、比较或计算数据。 3. 分区函数(PARTITION BY):在GROUP BY的基础上,按照指定列进行分区,每个分区可以独立进行聚合操作。 4. 分页查询:通过ROW_NUMBER()...

    974_SQL Pack sql工具

    - 编写高效的SQL语句,避免冗余计算和不必要的数据返回。 6. **安全与权限管理**: - 用户账号和权限设置,确保只有授权用户能访问数据库。 - 定期备份,防止数据丢失。 - 使用参数化查询防止SQL注入攻击。 ...

    sql 语句汇总详解

    - **定义**: SQL 提供了许多内置函数来执行计算。 - **示例**: - `COUNT()` 函数用于统计记录的数量。 - `GROUP BY` 子句用于结合与列列表中的列值匹配的一组行。 - `HAVING` 子句用于筛选 `GROUP BY` 的结果。 ...

    sql 机构化查询

    6. **聚合函数**:SQL提供了SUM, AVG, COUNT, MAX, MIN等聚合函数,用于计算一组值的总和、平均值、数量、最大值或最小值。例如,`SELECT COUNT(*) FROM Customers` 返回客户表中的记录数。 7. **连接(JOIN)**:...

    高效SQL学习笔记

    4. 连接操作:INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN,用于合并两个或更多表的数据。 5. 视图:虚拟表,由SELECT语句定义,可以简化复杂的查询并提供安全访问控制。 三、SQL优化 1. 索引:提高查询速度的...

    10分钟学会SQL

    在IT领域,SQL(Structured Query Language)是一种用于管理和处理关系数据库的强大语言,是数据分析师、数据库管理员和程序员必备的技能之一。"10分钟学会SQL"这个标题暗示我们将快速掌握SQL的基本概念和常用语句。...

    C#与sqlserver数据库操作_附实例说明及sql语句大全

    - **计算总数**:`COUNT(*)`返回记录数,例如: ```sql SELECT COUNT(*) AS TotalStudents FROM Students ``` - **求和、平均、最大、最小值**:`SUM()`, `AVG()`, `MAX()`, `MIN()`函数分别用于求和、平均、最大值...

    数据库 SQL 习题 SQL大全内含完整习题整理,有答案

    接着,联接(JOIN)操作是SQL中的另一核心概念,它允许我们合并来自多个表的数据。有多种类型的联接,如内联接(INNER JOIN)、左联接(LEFT JOIN)、右联接(RIGHT JOIN)和全外联接(FULL OUTER JOIN)。了解何时...

Global site tag (gtag.js) - Google Analytics