SQL Server行轉(zhuǎn)列的什么情況下被用?
以下的文章主要描述的是SQL Server行轉(zhuǎn)列在什么情況下可能被應用的道,你如果對其有興趣的話你就可以點擊以下的文章進行觀看了,以下的文章將會揭開它的神秘面紗,以下的文章將會揭開它的神秘面紗。
有些時候還是要用到SQL Server行轉(zhuǎn)列,比如下面的數(shù)據(jù):
一般的表結(jié)構(gòu)大多會這么設(shè)計,通過關(guān)聯(lián)查詢就可以得出上面的數(shù)據(jù)(客運量就隨便123了,非常時期以防恐怖分子)
不用說,大家也明白要得到下面的數(shù)據(jù):
列數(shù)不多的話一般可以這樣,也是網(wǎng)上比較經(jīng)典的寫法
Select 時間,
sum(case when 線路='1號線' then客運量 end) As '1號線' ,
sum(case when 線路='2號線' then客運量 end) As '2號線' ,
sum(case when 線路='5號線' then客運量 end) As '5號線' ,
......
Fromtable Group By 時間
在SQL Server2005里可以用Pivot關(guān)鍵字來操作,如下:
- declare@Strnvarchar(max)
- set@str='select時間'
- select@str=@str+',['+線路+']'from#Tgroupby線路
- set@str=@str+'FROM(
SELECT時間,客運量,線路
FROM#T)AST
PIVOT(sum(客運量)FOR線路IN
('
select@str=@str+'['+線路+'],'from#Tgroupby線路
set@str=left(@str,Len(@str)-1)
set@str=@str+'))ASthePivot
ORDERBY時間'
declare@T1table(datedatetime,一號線float,二號線float,五號線float,十號線float,十三號線float,八通線float,奧運支線float,機場線float)
- INSERTINTO@T1exec(@str)
- SELECT*FROM@T1
- droptable#T
SQL Server行轉(zhuǎn)列上面的語句如果運行提示不支持pivot關(guān)鍵字的話(一般SQL2000庫導入到SQL2005可能出現(xiàn)這問題),執(zhí)行下這句:EXEC sp_dbcmptlevel 數(shù)據(jù)庫名稱,90
為了方便看,字段改成中文了,其中#T表的數(shù)據(jù)就是最上面***張圖的數(shù)據(jù)(只要基礎(chǔ)數(shù)據(jù)源組織成這樣的就行)
把處理后的數(shù)據(jù)存放在表變量@T1中(當然臨時表也行),因為還要和其他表進行關(guān)聯(lián),導出一張大表,如下(表的部分列):
大致就這樣吧
處理的方式應該還有其它的,僅供參考。
【編輯推薦】
- SQL Server2000連接中出現(xiàn)錯誤的原因是什么?
- SQL Server開發(fā)中10個常見問題有哪些?
- SQL Server代碼編輯工具的詳細介紹
- 巧妙SQL Server 文件大小的步驟
- SQL Server unicode 支持的具體體現(xiàn)