`
elemark
  • 浏览: 237485 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL语句,列合并最笨的实现方法

    博客分类:
  • JAVA
阅读更多

      以前曾经遇见过,忘记怎么解决的了。这次又遇见了这个问题,没有办法逃避,只好硬着头皮解决。

      关键字:SQL Oracle 视图 view 列合并

 

      问题简单描述:[模型]

 

      name   item   score
      小王      数学     1
      小王      语文     2
      小王      物理     3
      小王      化学     4
      这是一个表的四条记录
      问:如果已知小王只会对应四个科目,如何SQL查询输出成:
      小王 数学 1  语文 2  物理 3  化学 4

      如果科目不固定,能否实现?

      [不能在页面上头处理,只能用SQL语句实现]

 

      最笨的解决办法:[个人认为一定有更好的实现方法]

      假设表为a
      小王只会对应四个科目
      解法如下:[SQL 语句]

      select a.name,a.item,a.score,b.item,b.score,c.item,c.score,d.item,d.score
      from a a,a b,a c,a d
      where a.name='小王' and a.item='数学' and b.name='小王' and b.item='语文'
      and c.name='小王' and c.item='物理' and d.name='小王' and d.item='化学'

     

      哈哈,史上最烂的SQL语句 诞生
      科目固定的条件下[也就是列数固定]可以解决问题,科目不固定,就不行了。

 

         写到这里想起来了,以前遇到这个问题的时候,是将数据表中的及录取出来,然后呢在页面或者后台构建一个list,list的维度是固定的。然后通过list和resultset的转置,最后实现了以上的列合并结果。

         其实静下心来思考一下,现在的关系型数据库其实已经很大程度上符合了现实世界的逻辑,之所以会出现这种需要转置,或者需要列合并的特殊处理,大多数情况是跟我们的数据库设计、模型设计或者现实逻辑等方面出现不足导致的。

         因为这篇文章不是讨论我们实际开发中的其他方面,就不展开讨论了。希望本文能够给正在各个搜索引擎上疯狂搜索列合并的网友一点儿帮助。

         也希望大家能对这个难题,给出更好的解决办法,多谢!

 

P.S.   本文所说的这种方法,不是我原创的,也是从多个论坛中看到的。

P.S.   对CSDN论坛需要注册登录才能看到某些跟帖的行为,表示鄙视......

 

                                                                                                   elemark

                                                                                      2010年7月13日15:20:35

 

0
1
分享到:
评论
3 楼 elemark 2010-07-14  
有办法
ivy013 写道
啊,这两天也遇到一个类似的问题,开始也和你一样想用表连接,可是我的类似科目这字段的值有好几十个,最后用存储过程实现了。

是不是存储过程中,用游标什么的实现的啊?hibernate能调用存储过程的结果么?
呵呵,小弟学艺不精惭愧惭愧,希望ivy013有时间能把实现原理和结果写个博文,跟大家共享一下您的高超技艺!

pan19849529 写道
group_contact


没用过这个group_contact,有时间学习一下呵呵
2 楼 pan19849529 2010-07-14  
group_contact
1 楼 ivy013 2010-07-13  
啊,这两天也遇到一个类似的问题,开始也和你一样想用表连接,可是我的类似科目这字段的值有好几十个,最后用存储过程实现了。

相关推荐

    sql语句万能生成器,sql语句,sql语句生成

    总之,SQL语句生成器是数据库开发者的得力助手,它能简化SQL编写,提高代码质量,降低调试难度,让开发者更专注于业务逻辑的实现。随着技术的发展,这类工具的功能将会越来越强大,更好地服务于数据库管理和开发工作...

    Oracle Sql语句转换成Mysql Sql语句

    OracleSqlConvert4MysqlSqlTool.java这个源码工具,根据描述,应该是实现了自动读取Oracle SQL语句,分析其结构,并根据MySQL的语法规则进行转换,然后将转换后的SQL语句保存到指定的目标文件中。这个工具简化了手动...

    Sql语句实现表的行列转换,行转列,列转行

    ### SQL语句实现表的行列转换,行转列,列转行 在处理数据库时,我们经常需要对数据进行各种变换以适应不同的分析需求。其中,“行列转换”就是一种非常实用的功能,它可以帮助我们将表中的行数据转换为列数据,...

    XML查询语句转换成SQL语句的实现.pdf

    XML 查询语句转换成 SQL 语句的实现 本文主要讨论将 XML 查询语句转换成 SQL 语句的实现。XML 已经成为 Internet 上数据交换的事实标准,特别是在 Web 数据挖掘技术中,对数据源的结构化需求导致人们对 XML 文档的...

    查看LINQ生成SQL语句的几种方法

    以下将详细介绍几种查看LINQ生成SQL语句的方法。 1. **Debug.WriteLine()** 在使用LINQ查询时,可以利用`Debug.WriteLine()`方法将生成的SQL语句打印到控制台。例如: ```csharp var query = (from customer in ...

    Java打印漂亮的SQL语句(被格式化的SQL语句)

    "标签"进一步强调了这个工具的关键特性,包括"Java输出漂亮的SQL语句",这意味着它是一个Java环境下的解决方案,能够集成到Java项目中,通过Java代码来调用和实现SQL语句的格式化。另一个标签"SQL格式化"则明确了它...

    SQL语句最优化

    SQL语句最优化SQL语句最优化SQL语句最优化SQL语句最优化

    PB脚本中SQL语句写法与SQL中语句写法对照

    在SQL语言中,可以使用Update表名Set字段名=case字段名when值1then值2else值三endFrom表名Where条件语句来实现条件语句的写法。 四、取余函数Mod() 在PB脚本中,可以使用Mod(要取余数的值,取余值)函数来实现取余数...

    Effective MySQL之SQL语句最优化.pdf

    10. SQL语句优化的技术手段:技术手段包括但不限于使用子查询优化、使用JOIN代替子查询、避免SELECT *、使用更有效的查询方法(如IN代替OR)、利用数据库提供的存储过程和函数减少网络往返次数等。 11. 经验与实践...

    sql行转列合并GrideView单元格 实现类似Excel效果

    "sql行转列合并GrideView单元格 实现类似Excel效果"这个主题聚焦于如何利用SQL查询和前端技术来构建一个动态、灵活的数据展示界面,使得用户可以像操作Excel那样方便地查看和操作数据。以下是关于这一主题的详细知识...

    通过SQL语句实现行列转换的几种方法

    ### 通过SQL语句实现行列转换的几种方法 在日常工作中,我们经常需要处理的数据结构并不总是按照我们期望的方式组织的。特别是在制作自定义报表或进行产品开发时,经常会遇到需要将数据从一种布局转换到另一种布局...

    存储过程中怎么动态执行sql语句

    通过以上两个示例可以看出,在Oracle存储过程中实现动态SQL语句的关键在于利用`EXECUTE IMMEDIATE`动态执行SQL语句以及通过创建包的方式来实现更为复杂的动态数据处理逻辑。这两种方法不仅提高了代码的灵活性,还...

    arcgis中的sql语句

    - **VBE环境下ADO方式执行SQL**:在Visual Basic for Applications (VBA)环境中,使用ActiveX Data Objects (ADO)技术可以实现SQL语句的自动化执行,适用于大规模数据处理和脚本编程。 综上所述,SQL在ArcGIS中的...

    将SQL数据表的一列转换为一行.docx

    在 MySQL 中,可以使用以下方法来将 SQL 数据表的一列转换为一行。 知识点1:使用存储过程实现数据转换 在 MySQL 中,可以使用存储过程来实现数据转换。存储过程是一种预先编译好的 SQL 语句集合,可以重复使用以...

    SQL合并一列

    SQL合并一列的实现方法 实现“SQL合并一列”的主要方法有两种:使用`GROUP_CONCAT`函数(MySQL特有)或`STRING_AGG`函数(SQL Server 2017及以上版本),以及使用`FOR XML PATH`来构建字符串。这里我们将重点介绍...

    通过解析sql语句获取表血缘关系项目

    "通过解析SQL语句获取表血缘关系项目"是一个针对数据库管理的实用技术,主要用于理解和跟踪数据的来源与流向,即血缘关系。血缘关系追踪在数据质量、合规性、审计和数据治理中扮演着关键角色。以下是关于这个主题的...

    C#将Lambda表达式转成Sql语句

    然而,在某些情况下,我们需要将这些表达式转换为实际的SQL语句,以便在数据库中执行。本文将深入探讨如何实现这一过程。 首先,我们需要了解Lambda表达式的基本结构。Lambda表达式通常以参数列表开始,后面跟着一...

    数据库分页SQL语句实现

    本文将详细介绍三种主流数据库(SQL Server、MySQL和Oracle)中的分页SQL语句实现方法。 #### SQL Server 的分页SQL语句实现 SQL Server 支持通过`TOP`关键字来实现分页查询。具体实现方式如下: 1. **查询第M页...

    动态拼接sql语句工具类,拼接where后面语句

    动态拼接sql语句工具类,拼接where后面语句 配合原生jdbc仿动态sql注入 if (ObjectUtil.isNotEmpty(maxLat)&&ObjectUtil.isNotEmpty(minLat)){ sqlParamList.add(new SqlParam("lat",minLat, SqlOpEnum.GE)); ...

    sql语句替换某列所有字段中的某个字符(如替换‘1,2,3,4’中的4)

    本文将深入探讨如何利用SQL语句实现对某一列所有字段中的特定字符进行替换的操作,这一过程通常用于数据清洗、格式调整或错误修正等场景。 ### SQL语句替换某列所有字段中的某个字符 #### 1. 基本概念与应用场景 ...

Global site tag (gtag.js) - Google Analytics