SQL如何实现动态的行列转置

  

甲骨文和新版Mysql里有主实现行列转置,但实际处理数据时,会碰到一些更复杂的转置情况,主也搞不定,比如:

  

   SQL如何实现动态的行列转置”> </p>
  <p>想转置成:</p>
  <p>
  <img src=      4   为A2=A4.Name | A4.conj([,收入来源])      5      
  祝辞A3.record (B4)   

A3格子根据原始数据得到期望数据结构的空表,B4格子得到每个人要填充入空表的数据。

  

如果不用复杂计算得到结果列,只是根据某个字段值动态生成列,直接用主函数就可以,具体的列都不用指定,根据字段值自动生成:   
=连接(“mysqlDB”)。查询(select *从t) .pivot (g1, g2, f)。

  

除了动态行列转置,还有双向转置,转置同时存在列间运算等复杂转置需求,这些计算用SPL都容易编写出来,参考   《转置》。

  

集算器SPL是解决SQL难题的专业脚本语言,它语法简单,符合自然思维,是天然分步,层次清晰的面向过程计算语言。它采用与数据库无关的统一语法,编写的算法可在数据库间无缝迁移。它是桌面级计算工具,即装即用,配置简单、调试功能完善,可设置断点,单步执行,每步执行结果都可查看。请参阅   SQL解题手

  

当数据不在数据库里时,SPL执行复杂计算仍然方便:   
=文件(“d:/t.csv”) . import (,,,,,) .pivot…

  

SPL能很方便地嵌入到JAVA应用,可参考   《Java如何调用SPL脚本》。

  

具体使用方法可参考,   《如何使用集算器》。

SQL如何实现动态的行列转置