?? 橫轉(zhuǎn)豎-字段名.sql
字號(hào):
--行列轉(zhuǎn)換示例1
--測試數(shù)據(jù)
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 '哲學(xué)',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 表
/*--測試結(jié)果
性別 小說 散文 哲學(xué)
---- ----- ----- -----
男性 38.0 18.9 16.2
女性 59.2 30.6 10.2
(所影響的行數(shù)為 2 行)
--*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -