SQL语句:如何让一个字段按个数分成几个字段显示

例如: 数据库只有唯一字段 BH

BH
1 AAAA
2. BBBB
3. CCCC
4 DDDD
5 EEEE
6 FFFF
7 GGGG
8 HHHH
假设每个字段只能有三个值,使结果成为:
BH BH1 BH2
AAAA DDDD GGGG
BBBB EEEE HHHH
3. CCCC FFFF

可以用SQL的循环来实现,处理如下:
declare @sql varchar(max)
declare @i int
declare @l int
declare @c varchar(10)

select @i = ( select count(1) from 你的表名 )

set @l = 0
set @sql = ' select '
while @l <= @i / 3
begin
set @c = cast( @i as varchar(10) )
set @sql = @sql + max ( case when ( r_n - ) / 3 = ' + @c + then BH end) BH' + @c + ','
set @l = @l + 1
end
set @sql = @sql + ' 1 noshow from ( select row_number() over ( order by BH ) r_n,* from 你的表名 ) s group by ( r_n - 1 ) % 3 '

exec ( @sql )

注意:这其中 BH 就是你的字段名,如果是其他字段名,要改一下。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-09
很简单啊,分段查询啊,改列名
select odename as BH from table where id between 1 and 3
select odename as BH1 from table where id between 4 and 7
select odename as BH2 from table where id between 8 and 9
上面简单的列子啦,如果你要自动生成的可以写个循环算
第2个回答  2013-08-09
不知道你因为什么业务这么去取数据,但是我觉得你可以换个思路,不直接用sql取出来分成几个字段,直接select * from table 然后通过你用的语言(java、C、等等)通过循环遍历判断使用就行。
备注:你可以尝自己写个function或者存储过程,循环判断什么的,看看能行不。真心没写过这种需求的sql
相似回答