




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PIVOT用于將列值旋轉(zhuǎn)為列名(即行轉(zhuǎn)列),在SQL Server 2000可以用聚合函數(shù)配合CASE語句實(shí)現(xiàn)PIVOT的一般語法是:PIVOT(聚合函數(shù)(列 FOR 列 in ( AS P完整語法:table_sourcePIVOT(聚合函數(shù)(value_column)FOR pivot_columnIN( UNPIVOT用于將列明轉(zhuǎn)為列值(即列轉(zhuǎn)行),在SQL Server 2000可以用UNION來實(shí)現(xiàn)完整語法:table_sourceUNPIVOT(value_columnFOR pivot_columnIN( 注意:PIVOT、UNPIVOT是SQL Server 2005 的語法,
2、使用需修改數(shù)據(jù)庫兼容級別在數(shù)據(jù)庫屬性->選項(xiàng)->兼容級別改為 90典型實(shí)例一、行轉(zhuǎn)列1、建立表格ifobject_id('tb'isnotnulldroptabletbgocreatetabletb(姓名varchar(10,課程varchar(10,分?jǐn)?shù)intinsertintotbvalues('張三','語文',74insertintotbvalues('張三','數(shù)學(xué)',83insertintotbvalues('張三','物理',93insertintotbva
3、lues('李四','語文',74insertintotbvalues('李四','數(shù)學(xué)',84insertintotbvalues('李四','物理',94goselect*fromtbgo姓名 課程 分?jǐn)?shù)- - -張三 語文 74張三 數(shù)學(xué) 83張三 物理 93李四 語文 74李四 數(shù)學(xué) 84李四 物理 942、使用SQL Server 2000靜態(tài)SQL-cselect姓名,max(case課程when'語文'then分?jǐn)?shù)else0end語文,max(case課程when
4、9;數(shù)學(xué)'then分?jǐn)?shù)else0end數(shù)學(xué),max(case課程when'物理'then分?jǐn)?shù)else0end物理fromtbgroupby姓名姓名 語文 數(shù)學(xué) 物理- - - -李四 74 84 94張三 74 83 933、使用SQL Server 2000動(dòng)態(tài)SQL-SQL SERVER 2000動(dòng)態(tài)SQL,指課程不止語文、數(shù)學(xué)、物理這三門課程。(以下同-變量按sql語言順序賦值declaresqlvarchar(500setsql='select姓名'selectsql=sql+',max(case課程when '''
5、;+課程+''' then分?jǐn)?shù)else 0 end'+課程+''from(selectdistinct課程fromtba-同from tb group by課程,默認(rèn)按課程名排序setsql=sql+' from tb group by姓名'exec(sql-使用isnull(,變量先確定動(dòng)態(tài)部分declaresqlvarchar(8000selectsql=isnull(sql+',',''+' max(case課程when '''+課程+''
6、9; then分?jǐn)?shù)else 0 end '+課程+''from(selectdistinct課程fromtbasa setsql='select姓名,'+sql+' from tb group by姓名'exec(sql姓名 數(shù)學(xué) 物理 語文- - - -李四 84 94 74張三 83 93 744、使用SQL Server 2005靜態(tài)SQLselect*fromtb pivot(max(分?jǐn)?shù)for課程in(語文,數(shù)學(xué),物理a5、使用SQL Server 2005動(dòng)態(tài)SQL-使用stuff(declaresqlvarchar(8000
7、setsql='' -初始化變量sqlselectsql=sql+','+課程fromtbgroupby課程-變量多值賦值setsql=stuff(sql,1,1,''-去掉首個(gè)','setsql='select * from tb pivot (max(分?jǐn)?shù) for課程in ('+sql+'a'exec(sql-或使用isnull(declaresqlvarchar(8000-獲得課程集合selectsql=isnull(sql+',',''+課程fromtbgro
8、upby課程 setsql='select * from tb pivot (max(分?jǐn)?shù) for課程in ('+sql+'a'exec(sql二、行轉(zhuǎn)列結(jié)果加上總分、平均分1、使用SQL Server 2000靜態(tài)SQL-SQL SERVER 2000靜態(tài)SQLselect姓名,max(case課程when'語文'then分?jǐn)?shù)else0end語文,max(case課程when'數(shù)學(xué)'then分?jǐn)?shù)else0end數(shù)學(xué),max(case課程when'物理'then分?jǐn)?shù)else0end物理,sum(分?jǐn)?shù)總分,cast(
9、avg(分?jǐn)?shù)*1.0asdecimal(18,2平均分fromtbgroupby姓名姓名 語文 數(shù)學(xué) 物理 總分 平均分- - - - -李四 74 84 94 252 84.00張三 74 83 93 250 83.332、使用SQL Server 2000動(dòng)態(tài)SQL-SQL SERVER 2000動(dòng)態(tài)SQLdeclaresqlvarchar(500setsql='select姓名'selectsql=sql+',max(case課程when '''+課程+''' then分?jǐn)?shù)else 0 end'+課程+
10、9;'from(selectdistinct課程fromtbasetsql=sql+',sum(分?jǐn)?shù)總分,cast(avg(分?jǐn)?shù)*1.0 as decimal(18,2 平均分from tb group by姓名'exec(sql3、使用SQL Server 2005靜態(tài)SQLselectm.*,n.總分,n.平均分from(select*fromtb pivot(max(分?jǐn)?shù)for課程in(語文,數(shù)學(xué),物理am,(select姓名,sum(分?jǐn)?shù)總分,cast(avg(分?jǐn)?shù)*1.0asdecimal(18,2平均分fromtbgroupby姓名nwherem.姓名=n.
11、姓名4、使用SQL Server 2005動(dòng)態(tài)SQL-使用stuff(-declaresqlvarchar(8000setsql='' -初始化變量sqlselectsql=sql+','+課程fromtbgroupby課程-變量多值賦值-同select sql = sql + ','+課程from (select distinct課程from tbasetsql=stuff(sql,1,1,''-去掉首個(gè)','setsql='select m.* , n.總分,n.平均分from(select * fro
12、m (select * from tb a pivot (max(分?jǐn)?shù) for課程in ('+sql+' b m ,(select姓名,sum(分?jǐn)?shù)總分, cast(avg(分?jǐn)?shù)*1.0 as decimal(18,2平均分from tb group by姓名 nwhere m.姓名= n.姓名'exec(sql-或使用isnull(declaresqlvarchar(8000selectsql=isnull(sql+',',''+課程fromtbgroupby課程setsql='select m.* , n.總分,n.平均分fr
13、om(select * from (select * from tb a pivot (max(分?jǐn)?shù) for課程in ('+sql+' b m ,(select姓名,sum(分?jǐn)?shù)總分, cast(avg(分?jǐn)?shù)*1.0 as decimal(18,2平均分from tb group by姓名 nwhere m.姓名= n.姓名'exec(sql二、列轉(zhuǎn)行1、建立表格ifobject_id('tb'isnotnulldroptabletbgocreatetabletb(姓名varchar(10,語文int,數(shù)學(xué)int,物理intinsertintotbval
14、ues('張三',74,83,93insertintotbvalues('李四',74,84,94goselect*fromtbgo姓名 語文 數(shù)學(xué) 物理- - - -張三 74 83 93李四 74 84 942、使用SQL Server 2000靜態(tài)SQL-SQL SERVER 2000靜態(tài)SQL。select*from(select姓名,課程='語文',分?jǐn)?shù)=語文fromtbunionallselect姓名,課程='數(shù)學(xué)',分?jǐn)?shù)=數(shù)學(xué)fromtbunionallselect姓名,課程='物理',分?jǐn)?shù)=物理fr
15、omtbtorderby姓名,case課程when'語文'then1when'數(shù)學(xué)'then2when'物理'then3end姓名 課程 分?jǐn)?shù)- - -李四 語文 74李四 數(shù)學(xué) 84李四 物理 94張三 語文 74張三 數(shù)學(xué) 83張三 物理 932、使用SQL Server 2000動(dòng)態(tài)SQL-SQL SERVER 2000動(dòng)態(tài)SQL。-調(diào)用系統(tǒng)表動(dòng)態(tài)生態(tài)。declaresqlvarchar(8000selectsql=isnull(sql+' union all ',''+' select姓名, 課程=
16、'+quotename(Name,''''+' , 分?jǐn)?shù) = '+quotename(Name+' from tb'fromsyscolumnswhereName!='姓名'andID=object_id('tb'-表名tb,不包含列名為姓名的其他列orderbycolidexec(sql+' order by姓名'go3、使用SQL Server 2005靜態(tài)SQL-SQL SERVER 2005動(dòng)態(tài)SQLselect姓名,課程,分?jǐn)?shù)fromtb unpivot (分?jǐn)?shù)for課程in(語文,數(shù)學(xué),物理 t4、使用SQL Server 2005動(dòng)態(tài)SQL-SQL SERVER 20
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國嵌入式軌跡球鼠標(biāo)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國多用扳手?jǐn)?shù)據(jù)監(jiān)測研究報(bào)告
- 吉林省四平市(第一高級中學(xué) 實(shí)驗(yàn)中學(xué) 三高中)三校聯(lián)考2024-2025學(xué)年高二上學(xué)期期中考試化學(xué)試題(含答案)
- 2022-2023學(xué)年浙江省溫州市樂清市三年級(上)期末數(shù)學(xué)試卷(含答案)
- 2019-2025年軍隊(duì)文職人員招聘之軍隊(duì)文職法學(xué)模擬考試試卷B卷含答案
- 2025年消防設(shè)施操作員之消防設(shè)備中級技能通關(guān)題庫(附答案)
- 農(nóng)藝師相關(guān)知識(shí)培訓(xùn)課件
- 采購單位合同范本(2篇)
- 鄉(xiāng)鎮(zhèn)安全知識(shí)培訓(xùn)課件
- 天然氣管道運(yùn)輸投資合同
- 小學(xué)二年級下冊《勞動(dòng)》教案
- 2025年湖南生物機(jī)電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及參考答案
- 2025年深圳市高三一模英語試卷答案詳解講評課件
- 2025年黑龍江旅游職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫一套
- 山東省聊城市冠縣2024-2025學(xué)年八年級上學(xué)期期末地理試卷(含答案)
- 敲響酒駕警鐘堅(jiān)決杜絕酒駕課件
- 2025年濰坊工程職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025年江西青年職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2025-2030年中國羽毛球行業(yè)規(guī)模分析及投資前景研究報(bào)告
- 初中物理校本教材《物理之窗》內(nèi)容
- 清華大學(xué)考生自述
評論
0/150
提交評論