求一个sql问题,问题内容有列出内容!高分!!

来源:百度知道 编辑:UC知道 时间:2024/05/30 20:24:02
数据库表结构
数据库名:testBase
表名:table1
table1的结构如下:
row1 row2 row3 row4…… rowN
1 2 3 4 …… N
1 2 3 4 …… N
……

我现在想做的就是这样一个事情,取出rowN中,合计数最大的前3列的列名。
假如
rowN的值最大,我想得到的是"rowN"的这个名字或者是其他的别名。
其次是rowN-1和rowN-2的名字或别名

我同事开始有个这个思路,我觉得好象行不通,就是先把全部的列的sum求出来,然后再排序,取前3个。但是试了下,好象行不通,反正我很菜的说,大家帮帮忙,出出思路。

另外数据库用的是mysql,甲骨文太大了,sql也相当而言大了……所以用mysql,个人感觉比较稳定……
取个名不容易,你那个好象在mysql里面跑不起……
我N值是定了的,上面那个水叹花兄说的那个列转行,我查了下资料,还是不是很清楚,能讲明白点儿吗?我再加50分上去。

他的思路没问题
先sum 然后行转列排序 mysql不熟就不给代码了

行转列 就是说 你查出来的sum(row1)....sum(rown)是一条记录
你要把 如a,b,c,d形式的一行记录转换成
a
b
c
d
的4行单列数据 就可以排序了 这就是行转列了

我用mssql帮你做个吧
create table table1(
r1 int,r2 int,r3 int,r4 int,r5 int,r6 int,r7 int,r8 int
)
insert table1 values(1,2,3,4,5,6,7,8)
insert table1 values(3,2,1,4,5,6,7,8)
insert table1 values(1,4,3,9,8,7,7,8)
insert table1 values(1,12,13,9,7,5,3,1)

create table ta1(id int identity(1,1) ,cols varchar(10),sums int)
declare @col varchar(10)
declare cursor1 cursor
for select b.[name] from syscolumns b
inner join (select * from sysobjects s where s.type='u' and s.name='table1') a
on a.id=b.id
open cursor1
fetch next from cursor1
into @col
while(@@fEtCh_status=0)
bEgIn
insert ta1(cols) values(@col)
exec('
declare @sum int
select @sum=sum(['+@col+']) from table1<