各位高手,小弟又来求助了
有一张表 tb1 col1 col2 col3
1.29 0.69 2.27
2.1 0.39 2.29
2.29 0.69 2.27我想达到这样一个过程:查询第一条记录,把每个值存储起来,然后查询下一条记录的时候比较每一列的值和前一条记录的相应的列值谁大,存储大的那个值,比如第二条记录扫描后,col1比第一条记录大就取2.1 col2比第一条小保留0.69 col3比第一条大取2.29 怎么实现?
有一张表 tb1 col1 col2 col3
1.29 0.69 2.27
2.1 0.39 2.29
2.29 0.69 2.27我想达到这样一个过程:查询第一条记录,把每个值存储起来,然后查询下一条记录的时候比较每一列的值和前一条记录的相应的列值谁大,存储大的那个值,比如第二条记录扫描后,col1比第一条记录大就取2.1 col2比第一条小保留0.69 col3比第一条大取2.29 怎么实现?
这样不就行了吗
declare @n varchar(200)
declare @id varchar(200)
declare @a varchar(200)
declare @get varchar(8000)
set @n =1
while @n < 5
begin
set @id = 1
while @id < 5
beginselect @a=name from syscolumns where id = object_id('tb_temp') and colorder =@id
exec('select ' +@a+ ' from tb_temp where 行号 ='+@n)set @id = @id+1
end
set @n = @n +1
set @id = 1
end请问如果这样的代码,我想把第一次得到的@a存储起来,以便下一次循环的时候和前一次的@a做比较,应该怎么写
比如1到10,那么就select max(col1),max(col2),max(col3) from tb1 where id>1 and id<=10
用游标不是不可以,但是效率问题你还是要考虑的吧
就是那个400多列的表,我想先用个小表做测试 tb1 行号 col1 col2 col3
1 1.29 0.69 2.27
2 2.1 0.39 2.29
3 2.29 0.69 2.27declare @n varchar(200)
declare @id varchar(200)
declare @a varchar(200)
declare @get varchar(8000)
set @n =1
while @n < 5
begin
set @id = 1
while @id < 5
beginselect @a=name from syscolumns where id = object_id('tb_temp') and colorder =@id
exec('select ' +@a+ ' from tb_temp where 行号 ='+@n)set @id = @id+1
end
set @n = @n +1
set @id = 1
end这样后能得到每一个单元格的值,我现在想把每次exec('select ' +@a+ ' from tb_temp where 行号 ='+@n)的值保存下来,供下一次数据比较