⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 横转竖-字段名.sql

📁 sqlserver 数据库编程的绝好脚本
💻 SQL
字号:
--行列转换示例1

--测试数据
create table 表(类别 varchar(10),男性 decimal(20,1),女性 decimal(20,1))
insert 表 select '小说',38.0,59.2
union all select '散文',18.9,30.6
union all select '哲学',16.2,10.2
go

--查询处理
declare @s1 varchar(8000),@s2 varchar(8000)
	,@s3 varchar(8000),@s4 varchar(8000),@s5 varchar(8000)
	,@i varchar(10)
select @s1='',@s2='',@s3='',@s4='',@s5='',@i='0'
select @s1=@s1+',@'+@i+' varchar(8000)'
	,@s2=@s2+',@'+@i+'=''性别='''''+name+''''''''
	,@s3=@s3+'
	,@'+@i+'=@'+@i+'+'',[''+[类别]+'']=''+cast(['+name+'] as varchar)'
	,@s4=@s4+',@'+@i+'=''select ''+@'+@i
	,@s5=@s5+'+'' union all ''+@'+@i
	,@i=cast(@i as int)+1
from syscolumns 
where object_id('表')=id and name<>'类别'

select @s1=stuff(@s1,1,1,'')
	,@s2=stuff(@s2,1,1,'')
	,@s3=stuff(@s3,1,4,'')
	,@s4=stuff(@s4,1,1,'')
	,@s5=stuff(@s5,1,15,'')

exec('declare '+@s1+'
select '+@s2+'
select '+@s3+'
from 表
select '+@s4+'
exec('+@s5+')')
go

--删除测试
drop table 表

/*--测试结果
性别   小说    散文    哲学    
---- ----- ----- ----- 
男性   38.0  18.9  16.2
女性   59.2  30.6  10.2

(所影响的行数为 2 行)
--*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -