一个表temp,有3列,有5条记录。
若写select * from temp,显示5行3列的数据
现在我想显示3行5列,select如何写?
select sum(decode(a,<value1>,1,0)) ,
sum(decode(a,<value2>,1,0)).
sum(decode(a,<value3>,1,0)),
sum(decode(a,<value4>,1,0)),
sum(decode(a,<value5>,1,0))
from temp
其实说白了,这就是上大学时我们学“线性数学”的矩阵变换问题
即A(mn)=A(nm)的问题。
完成方式一定是通过数组。
golden及plsql developer都有这样的功能
我认为不是通过delphi就是通过vc或c++builder完成的。
如果说记录数确定,一个sql是可以的
如果记录数不确定,用一个过程即可,tom就写过这个过程的源代码
第一问数据量不多,还可以用一条语句实现
select 代码,sum(decode(类别,a,值)) a,
sum(decode(类别,b,值)) b,
.......
from table
group by 代码;
第二问,基本成为不可能,把有记录设成一行,那行长度不可预知,不赞成这样做法.