日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

[转]SQL交叉表实例

發(fā)布時間:2025/4/16 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]SQL交叉表实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/*
普通行列轉(zhuǎn)換
(愛新覺羅.毓華?2007-11-18于海南三亞)

假設(shè)有張學(xué)生成績表(tb)如下:
Name?Subject?Result
張三?語文  74
張三?數(shù)學(xué)  83
張三?物理  93
李四?語文  74
李四?數(shù)學(xué)  84
李四?物理  94
*/

-------------------------------------------------------------------------
/*

想變成?
姓名?????????語文????????數(shù)學(xué)????????物理??????????
----------?-----------?-----------?-----------?
李四?????????74??????????84??????????94
張三?????????74??????????83??????????93
*/

create?table?tb
(
???Name????
varchar(10)?,
???Subject?
varchar(10)?,
???Result??
int
)

insert?into?tb(Name?,?Subject?,?Result)?values('張三'?,?'語文'?,?74)
insert?into?tb(Name?,?Subject?,?Result)?values('張三'?,?'數(shù)學(xué)'?,?83)
insert?into?tb(Name?,?Subject?,?Result)?values('張三'?,?'物理'?,?93)
insert?into?tb(Name?,?Subject?,?Result)?values('李四'?,?'語文'?,?74)
insert?into?tb(Name?,?Subject?,?Result)?values('李四'?,?'數(shù)學(xué)'?,?84)
insert?into?tb(Name?,?Subject?,?Result)?values('李四'?,?'物理'?,?94)
go

--靜態(tài)SQL,指subject只有語文、數(shù)學(xué)、物理這三門課程。
select?name?姓名,
??
max(case?subject?when?'語文'?then?result?else?0?end)?語文,
??
max(case?subject?when?'數(shù)學(xué)'?then?result?else?0?end)?數(shù)學(xué),
??
max(case?subject?when?'物理'?then?result?else?0?end)?物理
from?tb
group?by?name
/*
姓名?????????語文????????數(shù)學(xué)????????物理??????????
----------?-----------?-----------?-----------?
李四?????????74??????????84??????????94
張三?????????74??????????83??????????93
*/

--動態(tài)SQL,指subject不止語文、數(shù)學(xué)、物理這三門課程。
declare?@sql?varchar(8000)
set?@sql?=?'select?Name?as?'?+?'姓名'
select?@sql?=?@sql?+?'?,?max(case?Subject?when?'''?+?Subject?+?'''?then?Result?else?0?end)?['?+?Subject?+?']'
from?(select?distinct?Subject?from?tb)?as?a
set?@sql?=?@sql?+?'?from?tb?group?by?name'
exec(@sql)?
/*
姓名?????????數(shù)學(xué)????????物理????????語文??????????
----------?-----------?-----------?-----------?
李四?????????84??????????94??????????74
張三?????????83??????????93??????????74
*/

-------------------------------------------------------------------
/*
加個平均分,總分
姓名?????????語文????????數(shù)學(xué)????????物理????????平均分????????????????總分??????????
----------?-----------?-----------?-----------?--------------------?-----------?
李四?????????74??????????84??????????94??????????84.00????????????????252
張三?????????74??????????83??????????93??????????83.33????????????????250
*/

--靜態(tài)SQL,指subject只有語文、數(shù)學(xué)、物理這三門課程。
select?name?姓名,
??
max(case?subject?when?'語文'?then?result?else?0?end)?語文,
??
max(case?subject?when?'數(shù)學(xué)'?then?result?else?0?end)?數(shù)學(xué),
??
max(case?subject?when?'物理'?then?result?else?0?end)?物理,
??
cast(avg(result*1.0)?as?decimal(18,2))?平均分,
??
sum(result)?總分
from?tb
group?by?name
/*
姓名?????????語文????????數(shù)學(xué)????????物理????????平均分????????????????總分??????????
----------?-----------?-----------?-----------?--------------------?-----------?
李四?????????74??????????84??????????94??????????84.00????????????????252
張三?????????74??????????83??????????93??????????83.33????????????????250
*/

--動態(tài)SQL,指subject不止語文、數(shù)學(xué)、物理這三門課程。
declare?@sql1?varchar(8000)
set?@sql1?=?'select?Name?as?'?+?'姓名'
select?@sql1?=?@sql1?+?'?,?max(case?Subject?when?'''?+?Subject?+?'''?then?Result?else?0?end)?['?+?Subject?+?']'
from?(select?distinct?Subject?from?tb)?as?a
set?@sql1?=?@sql1?+?'?,?cast(avg(result*1.0)?as?decimal(18,2))?平均分,sum(result)?總分?from?tb?group?by?name'
exec(@sql1)?
/*
姓名?????????數(shù)學(xué)????????物理????????語文????????平均分????????????????總分??????????
----------?-----------?-----------?-----------?--------------------?-----------?
李四?????????84??????????94??????????74??????????84.00????????????????252
張三?????????83??????????93??????????74??????????83.33????????????????250
*/

drop?table?tb????

---------------------------------------------------------
--
-------------------------------------------------------
/*

如果上述兩表互相換一下:即

姓名?語文?數(shù)學(xué)?物理
張三?74  83  93
李四?74  84  94

想變成?
Name???????Subject?Result??????
----------?-------?-----------?
李四?????????語文??????74
李四?????????數(shù)學(xué)??????84
李四?????????物理??????94
張三?????????語文??????74
張三?????????數(shù)學(xué)??????83
張三?????????物理??????93
*/

create?table?tb1
(
???姓名?
varchar(10)?,
???語文?
int?,
???數(shù)學(xué)?
int?,
???物理?
int
)

insert?into?tb1(姓名?,?語文?,?數(shù)學(xué)?,?物理)?values('張三',74,83,93)
insert?into?tb1(姓名?,?語文?,?數(shù)學(xué)?,?物理)?values('李四',74,84,94)

select?*?from
(
??
select?姓名?as?Name?,?Subject?=?'語文'?,?Result?=?語文?from?tb1?
??
union?all
??
select?姓名?as?Name?,?Subject?=?'數(shù)學(xué)'?,?Result?=?數(shù)學(xué)?from?tb1
??
union?all
??
select?姓名?as?Name?,?Subject?=?'物理'?,?Result?=?物理?from?tb1
)?t
order?by?name?,?case?Subject?when?'語文'?then?1?when?'數(shù)學(xué)'?then?2?when?'物理'?then?3?when?'總分'?then?4?end

--------------------------------------------------------------------
/*
加個平均分,總分
Name???????Subject?????Result???????????????
----------?-------????--------------------?
李四?????????語文??????74.00
李四?????????數(shù)學(xué)??????84.00
李四?????????物理??????94.00
李四?????????平均分????84.00
李四?????????總分??????252.00
張三?????????語文??????74.00
張三?????????數(shù)學(xué)??????83.00
張三?????????物理??????93.00
張三?????????平均分????83.33
張三?????????總分??????250.00
*/

select?*?from
(
??
select?姓名?as?Name?,?Subject?=?'語文'?,?Result?=?語文?from?tb1?
??
union?all
??
select?姓名?as?Name?,?Subject?=?'數(shù)學(xué)'?,?Result?=?數(shù)學(xué)?from?tb1
??
union?all
??
select?姓名?as?Name?,?Subject?=?'物理'?,?Result?=?物理?from?tb1
??
union?all
??
select?姓名?as?Name?,?Subject?=?'平均分'?,?Result?=?cast((語文?+?數(shù)學(xué)?+?物理)*1.0/3?as?decimal(18,2))?from?tb1
??
union?all
??
select?姓名?as?Name?,?Subject?=?'總分'?,?Result?=?語文?+?數(shù)學(xué)?+?物理?from?tb1
)?t
order?by?name?,?case?Subject?when?'語文'?then?1?when?'數(shù)學(xué)'?then?2?when?'物理'?then?3?when?'平均分'?then?4?when?'總分'?then?5?end

drop?table?tb1 ajiaoch

轉(zhuǎn)載于:https://www.cnblogs.com/babyt/archive/2008/10/21/1315972.html

總結(jié)

以上是生活随笔為你收集整理的[转]SQL交叉表实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜精品无码一区二区 | 国产一区两区 | 成人在线三级 | 婷婷激情网站 | 精品少妇一二三区 | 国产亚洲精品久久久久久久 | 午夜看片在线观看 | 亚洲乱色熟女一区二区 | 人人爱人人射 | 中国女人内谢69xxxx免费视频 | 美女脱了裤子让男人捅 | 玖玖爱免费视频 | 黑人巨大精品一区二区在线 | 无码国产精品一区二区高潮 | 天天久久 | 天天看黄色 | 91成人在线免费观看 | 久久精品午夜 | 麻豆视频播放 | 国产精品麻豆欧美日韩ww | 99精品网 | 捆绑少妇玩各种sm调教 | a级无遮挡超级高清-在线观看 | 日本亲子乱子伦xxxx50路 | 日韩资源在线观看 | 舐丝袜脚视频丨vk | 欧美区二区三区 | 成人高潮片免费 | 91欧美国产| 日本激情一区二区三区 | www九色| 日朝毛片 | 亚洲精品中文字幕在线观看 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 欧美性受xxxx黑人xyx | 制服丝袜影音先锋 | 四虎影城库 | 日韩国产小视频 | 久久久久久久久久久免费 | 四虎网址在线 | 6080毛片| 奇米色影视 | 国产精品一区二区三区久久 | 久久婷婷伊人 | 亚洲一线二线在线观看 | 国产免费色视频 | 麻豆91茄子在线观看 | 国产精品黑人一区二区三区 | 天天看黄色 | 激情福利在线 | 性色在线观看 | 国产精品-区区久久久狼 | 一道本久久| 秋霞影院午夜伦 | 午夜视频在线观看国产 | 亚洲欧洲精品在线 | 一级做a免费视频 | 自拍视频国产 | a级一级黄色片 | 日韩久久精品 | 中文字字幕一区二区三区四区五区 | 鲁丝片一区二区三区 | 亚洲资源av | 区一区二区三 | 欧美黄色一区二区三区 | 自拍三区| 婷婷丁香九月 | 成年人爱爱视频 | 18视频在线观看网站 | 日韩va视频 | 日本午夜精华 | 操处女逼视频 | 天堂资源中文在线 | 狠狠操狠狠 | 羞视频在线观看 | 欧美老肥妇做爰bbww | 日韩激情成人 | 欧美一区二区三区久久妖精 | 欧美熟妇交换久久久久久分类 | 91porn破解版| 越南少妇做受xxx片 亚洲av综合色区无码一二三区 | www.jizzcom| 99在线精品视频 | 国产精品熟女一区二区不卡 | 性欧美video另类hd尤物 | 尤物视频在线观看免费 | 国产欧美一区二区三区在线 | 伊人福利在线 | 五月婷婷六月色 | 激情综合在线 | 蜜桃aaa | 亚洲第一区在线观看 | 在线sese | 亚洲视频中文字幕在线观看 | 欧美一区二区高清视频 | 精品97人妻无码中文永久在线 | 麻豆精品久久久久久久99蜜桃 | 久艹在线播放 | 欧美在线观看a |