题1:如下表1所示,如何用SQL语句选取次最大值(指数量字段)的记录?
表1:
表名:TableA
客户 数量
A01 2000
A05 4000
A08 2500
A09 4800
A10 3800
A30 4500
A45 8990题2:依据表1,如何将数量字段直接输出以下字串。
2000,4000,2500,4800,3800,4500,8990题3:依据题2输出的字串2000,4000,2500,4800,3800,4500,8990,如何将其还原为行记录,如下表:
字段
2000
4000
2500
4800
3800
8990题4:依据表1,如何输出数量名次表,要求达到以下要求(分别使用存储过程和函数输出结果,列出两种方法)
次序 客户 数量
1 A45 8990
2 A09 4800
3 A30 4500
4 A05 4000
5 A10 3800
6 A08 2500
7 A01 2000

解决方案 »

  1.   

    这些题目都是在MSSERVER下运行的,有人知道吗?
      

  2.   

    --1
    select max(数量) from tablea
    --2
    select stuff((select ','+rtrim(数量) from tablea for xml path('')),1,1,'')
    --3
    declare @str varchar(100)
    set @str='2000,4000,2500,4800,3800,4500,8990'
    select substring(stuff(','+@str+',',1,number,''),1,charindex(',',stuff(','+@str+',',1,number,''))-1) from master..spt_values where type='p' and number between 1 and len(@str)+1 and substring(','+@str+',',number,1)=','
    --4
    select 次序=row_number()over(order by getdate()),* from tablea