日期:2014-05-17  浏览次数:20474 次

看了很多行列转换的帖子,不知为什么那么多的行列转换应用
一品梅 (156934052) 17:36:18
看了很多行列转换的帖子,好几年了,不知为什么那么多的行列转换应用
大家讨论讨论啊

------解决方案--------------------
简单地说这是存储和统计的差异。
------解决方案--------------------
只回答行列转换的问题就可以混好几个星星的
------解决方案--------------------
我也觉得,其实过于频繁的行转列我个人认为是设计的缺陷。就像临时表,大量资料都说,过多使用临时表也是设计的缺陷,证明你不能直接操作数据,而要把数据经过反复的、复杂的组合来实现。并且个人还没测试过在大数据量的过程中,行转列是否存在严重的性能问题。这些都是需要考虑的,不能为了实现功能而去实现功能。计算机系统只是为了实现业务逻辑。
------解决方案--------------------
同意楼上的说法,需要行转列是数据库设计的不合理,不过大多数情况下也是为了满足统计显示的需求,数据库设计、数据存储的时候不可能兼顾后期所有业务统计的需求,
------解决方案--------------------
行转列恰恰是有效的补充了表设计中的不足,减少冗余字段,并且增加数据快速存储。
------解决方案--------------------
数据库干了数据库不该干的事儿。 SSIS还有其他的各种前台显示,都在偷笑...

简单说,就是还在摸索着用。
------解决方案--------------------
寻找平衡的结果
在数据库实现行列转换可以有两个方面可以避免,一是设计上的冗余,带来的坏处是增加了数据入库逻辑的难度以及可能存在的不一致;一是把行列转换逻辑在程序实现,一般来说在业务逻辑层实现,这里可能带来两个问题,一是业务逻辑变得太复杂,一是性能达不到要求。

如果处于平衡的原因,放在数据库实现行列转换未尝不可,需要注意的是,在数据库实现行列转换同样存在性能瓶颈,平衡的时候需要认真考虑。

------解决方案--------------------
我们这边行列转换一般是为了减少冗余。在设计的时候是行。转换成列。这样的话减少了冗余,也便于以后的扩展。
列转行用得比较少一些。
------解决方案--------------------
我超级不喜欢行列转换,但是有的时候又不得不写...
------解决方案--------------------
现实应用中统计报表,行列转换很常见的,就比如销售报表,把年分和季度转换成列来显示数据、分析数据
------解决方案--------------------
纯粹是人们思维习惯的问题,喜欢把问题按一定维度展开,不愿上下浏览
我把这个问题比喻为两个极端
所有数据呈现为一维的,那我们的大脑大概能读01001010111这样的代码了
所有数据最大程度的多维显示,那我们一眼过去,不但能看到上下左右,还能看到过去未来。


------解决方案--------------------
有的东西必须行转列,和数据库设计没关系,你再怎么设计能跟的上老总那日新月异的报表需求不?
------解决方案--------------------
因为我们生产用的数据库基本都是OLTP类型,只考虑了对数据存储、查询的优化,没有考虑分析、统计的优化。