----start
在网上看到这样一个问题:(问题地址:http://www.mydb2.cn/bbs/read.php?tid=1297&page=e&#a)
这是一个非常经典的 4属性的表设计模式,顾名思义,这样的表一般有四列,分别是:entity_id, attribute_name,attribute_type, attribute_value ,这样的设计使我们添加字段非常容易,如:我们想添加一个物理成绩是非常简单的,我们只要向表中插入一条记录即可。但是,这样的设计有一个非常严重的问题,那就是:查询难度增加,查询效率非常差。
要想实现上面的查询有一个原则,那就是:通过case语句创造虚拟字段,使结果集成为二维数组,然后应用聚合函数返回单一记录。怎么样?不理解,仔细看看下面的图和分析下面的语句你就理解了。
你可能正在感叹,这样的解决方案是多么的巧妙,可惜不是我想出来的,在这里,我也不敢把大师的思想据为己有,以上思想来自<SQL语言艺术>的第11章,想了解更全面的信息,大家可以参考。
---更多参见:DB2 SQL 精萃
----声明:转载请注明出处。
----last updated on 2009.12.20
----written by ShangBo on 2009.12.16
----end
本文介绍了如何将具有4属性表设计模式的DB2数据转换为更直观的格式。通过使用CASE语句和聚合函数,可以将班级、科目和分数数据从行转换为列,从而简化查询。示例中展示了创建和填充score表,以及执行转换查询的过程。

被折叠的 条评论
为什么被折叠?



