刚刚发了帖子,现在还有个要求,拆列 并分组加序号?
spid F99 F37 F87 F64 F54 F90 F16 F71 F17 F05 F44 F78 F11 F15 F14 F57 F28 F98 F97 F69 F35
SPH00031148 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031183 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031169 5 10 5 5 5 5 3 5 5 3 5 5 5 3 10 2 5 2 2 3 5
SPH00031179 2 5 2 2 2 2 2 2 2 2 2 2 2 2 7 2 2 2 2 2 2
SPH00031180 3 10 5 2 2 5 2 5 2 2 2 5 5 3 10 5 2 2 2 2 4
SPH00031172 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031155 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031170 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031165 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00031164 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031163 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031166 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00031167 10 20 10 10 10 10 10 10 10 5 5 10 10 10 20 10 10 5 5 5 5
SPH00031145 2 5 2 2 2 2 2 2 0 0 0 2 2 2 5 2 2 0 2 2 2
SPH00031146 1 2 1 0 0 1 1 1 0 0 0 0 1 0 2 0 0 0 0 0 0
SPH00031153 3 10 5 2 2 5 2 5 2 2 2 5 5 3 10 5 2 2 2 2 4
SPH00031154 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00031177 2 5 2 2 2 2 2 2 2 2 2 2 2 2 7 2 2 2 2 2 2
SPH00031178 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00005106 2 5 2 2 2 2 2 2 2 2 2 2 2 2 7 2 2 2 2 2 2
SPH00005107 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00031147 2 5 2 0 0 2 0 1 0 0 0 2 2 2 5 2 2 0 0 0 1
SPH00031149 3 10 5 2 2 5 2 5 2 2 2 5 5 3 10 5 2 2 2 2 4
SPH00031150 3 10 5 2 2 5 2 5 2 2 2 5 5 3 10 5 2 2 2 2 4
SPH00031151 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031152 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00030845 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031160 3 10 5 2 2 5 2 5 2 2 2 5 5 3 10 5 2 2 2 2 4
SPH00031159 3 10 5 2 2 5 2 5 2 2 2 5 5 3 10 5 2 2 2 2 4
SPH00031182 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031157 2 5 5 2 2 5 2 2 2 2 2 2 3 2 10 2 2 2 2 2 2
SPH00031158 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00031156 10 20 10 5 5 5 5 5 5 5 5 5 5 10 20 5 5 5 5 5 5
SPH00031162 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00031171 5 10 10 3 3 5 3 5 10 3 3 10 5 3 18 5 5 3 3 3 5
SPH00031181 2 5 2 0 0 0 0 2 2 0 0 2 0 0 5 0 0 0 0 0 0
SPH00031175 2 5 2 2 2 2 2 2 2 2 2 2 2 2 7 2 2 2 2 2 2
SPH00031176 3 10 5 2 2 5 2 5 2 2 2 5 5 3 10 5 2 2 2 2 4
SPH00031186 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00031187 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00031188 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00031189 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3
SPH00031190 5 10 5 3 3 5 3 5 3 3 3 3 5 3 10 5 3 3 3 3 4
SPH00031191 5 10 10 3 3 5 3 5 5 3 3 5 5 3 10 5 5 3 3 3 3拆成
拆成fdbs spid      shl  xuhao
F99 SPH00031148 2    1
F99 SPH00031183 2    2
...接着F37 SPH00031148 5    1
F37 SPH00031183 5    2
...
至结束

解决方案 »

  1.   


    declare @sql varchar(8000) set @sql=''
    select @sql=
    @sql+' select '''+name+''' as col1,spid as col2,'+
    name+' as col3 from sptable union all'
    from syscolumns where id=object_id('sptable') and name<>'spid'
    select @sql=left(@sql,len(@sql)-9)
    select @sql='
    select aa.*,row_number() over (partition by col1 order by (select 1)) as xuhao from ('
    +@sql+' ) aa order by 1 desc'
    exec(@sql)/*
    col1 col2        col3        xuhao
    ---- ----------- ----------- --------------------
    F99  SPH00031148 2           1
    F99  SPH00031183 2           2
    F99  SPH00031169 5           3
    F99  SPH00031179 2           4
    F99  SPH00031180 3           5
    ...
    F97  SPH00031170 2           8
    F97  SPH00031165 3           9
    F97  SPH00031164 2           10
    F97  SPH00031163 2           11
    F97  SPH00031166 3           12
    ...
    F87  SPH00031148 5           1
    F87  SPH00031183 5           2
    F87  SPH00031169 5           3
    F87  SPH00031179 2           4
    F87  SPH00031180 5           5
    ...
    F69  SPH00031178 2           19
    F69  SPH00005106 2           20
    F69  SPH00005107 3           21
    F69  SPH00031147 0           22
    F69  SPH00031149 2           23
    ...
    F69  SPH00031158 3           32
    F69  SPH00031156 5           33
    F69  SPH00031162 3           34
    F69  SPH00031171 3           35
    F69  SPH00031181 0           36
    F69  SPH00031175 2           37
    ...
    F14  SPH00031181 5           36
    F14  SPH00031175 7           37
    F14  SPH00031176 10          38
    ...
    F11  SPH00031163 3           11
    F11  SPH00031166 5           12
    F11  SPH00031167 10          13
    ...
    F05  SPH00031189 3           42
    F05  SPH00031190 3           43
    F05  SPH00031191 3           44(924 row(s) affected)
    */
      

  2.   

    declare @sql varchar(8000) set @sql=''
    select @sql=
    @sql+' select '''+name+''' as col1,spid as col2,'+
    name+' as col3 from sptable union all'
    from syscolumns where id=object_id('sptable') and name<>'spid'
    select @sql=left(@sql,len(@sql)-9)
    select @sql='
    select aa.*,row_number() over (partition by col1 order by (select 1)) as xuhao into ##xt from ('
    +@sql+' ) aa order by 1 desc'
    exec(@sql)
    select * from ##xt
    搞定了 谢谢啊