日期:2014-05-18  浏览次数:20820 次

拆列 并分组加序号?
刚刚发了帖子,现在还有个要求,拆列 并分组加序号?
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
...
至结束




------解决方案--------------------
SQL code

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