`
elemark
  • 浏览: 238308 次
  • 性别: 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语句sql语句sql语句.txt

    sql语句sql语句sql语句sql语句sql语句

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

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

    sql语句说明sql语句说明sql语句说明.zip

    sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明...

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

    hibernate执行原生sql语句

    Hibernate 提供了多种方式来执行原生 SQL 语句,其中之一是使用 `Session.createSQLQuery()` 方法,该方法返回一个 `SQLQuery` 对象,该对象提供了执行原生 SQL 语句的方法。 例如,我们可以使用以下代码来执行一个...

    SQL语句最优化

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

    SQLServer动态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语句

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

    arcgis中的sql语句

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

    sql语句、动态SQL语句基本语法

    - 在大多数数据库系统中,动态SQL可以通过字符串拼接和EXECUTE命令实现。例如,在PL/SQL(Oracle)中,可以写成: ```sql DECLARE sql_query VARCHAR2(200); BEGIN sql_query := 'SELECT * FROM table_name ...

    易语言动态拼接sql语句

    在编程领域,动态拼接SQL语句是一种常见的技术,它允许程序在运行时根据需要构建SQL查询。在易语言这个中国本土化的编程环境中,动态拼接SQL同样具有重要的应用价值。易语言以其独特的汉字编程风格,降低了编程的...

    SQLTracker,抓取sql语句的工具

    SQLTracker是一款专为数据库操作监控设计的工具,它在IT领域中主要用于跟踪和记录SQL语句的执行情况。SQL(Structured Query Language)是用于管理关系数据库的编程语言,包括查询、更新、插入和删除数据等操作。SQL...

    SQL合并一列

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

Global site tag (gtag.js) - Google Analytics