CSDN SQL版常見問題之四--行列互換
来源:互联网 发布:js 转码 encode 编辑:程序博客网 时间:2024/05/11 16:29
/*
--轉載請注明,謝謝
--作者: Paoluo
--日期: 2007-08-31
--用途: 將表中的列名轉為Type的數據
*/
--創建測試環境
Create Table TEST
(ID Int,
A Int,
B Int,
C Int)
--插入數據
Insert TEST Select 1, 100, 90, 0
Union All Select 2, 80, 85, 92
Union All Select 3, 87, 0, 0
GO
--測試
--察看原表數據
Select * From TEST
--如果列名已知
--寫出列名已知情況下的語句,是希望能幫助大家更好的理解動態SQL語句
--下面EXEC(@S)中執行即為此語句
Select * From (
Select ID, 'A' As Type, A As Score From TEST
Union
Select ID, 'B' As Type, B As Score From TEST
Union
Select ID, 'C' As Type, C As Score From TEST
) A
Where
Score != 0
Order By
ID, Type
--如果Type不是固定的,使用動態SQL語句
--定義變量
Declare @S Varchar(8000)
--賦初值,此句不能少
Select @S = ''
--從系統表SysColumns中循環得到列名(Name),並使用Name拼結語句
Select @S = @S + ' Union Select ID, ''' + Name + ''' As Type, ' + Name + ' As Score From TEST'
From SysColumns Where ID = OBJECT_ID('TEST') Order By ColID
--去掉前面多於的Union, 並去掉為0的Score,加上排序
Select @S = 'Select * From (' + Stuff(@S, 1, 7 ,'') + ' ) A Where Score != 0 Order By ID, Type'
--執行動態SQL語句
EXEC(@S)
GO
--刪除測試環境
Drop Table TEST
--結果
/*
--表中原來數據
ID A B C
1 100 90 0
2 80 85 92
3 87 0 0
--實現效果
ID Type Score
1 A 100
1 B 90
2 A 80
2 B 85
2 C 92
3 A 87
*/
- CSDN SQL版常見問題之四--行列互換
- CSDN SQL Area --行列互转...
- CSDN SQL Area --行列互转
- SQL 行列互变之终极方法
- SQL 行列互转
- SQL行列互转
- SQL行列互转
- SQL行列互转
- SQl行列互转
- SQL报表之行列变换
- sql之行列转换备份
- SQL行列轉換方法
- sql行列互转(转帖)
- SQL面试题之行列转换
- SQL面试题之行列转换
- Sql Server 2008 行列互转问题
- T-SQL行列互转(PIVOT/UNPIVOT)
- CSDN SQL版常見問題之二--行轉列
- 软路由 存储设备 的最适选择
- CSDN SQL版常見問題之二--行轉列
- CSDN SQL版常見問題之三--列轉行
- 编写Word宏轻松将全角数字转换为半角
- 解放领导者 摘要
- CSDN SQL版常見問題之四--行列互換
- SQLSERVER2005生成文本文件(利用CMD里面的ECHO生成)
- 奇怪的数值期间
- 利用大智慧DDE数据生成每只股票的历史数据文件(SQLServer2005)
- windows
- 接毕业设计,小型网站,winform管理系统
- UML
- 查看、修改oracle字符集,查看oracle版本
- powerDesign