日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 无码人妻黑人中文字幕 | 精品毛片| av一级黄色片 | 女人av在线 | 伊人www | 怡红院精品视频 | 婷婷在线综合 | 欧美一级久久久 | 五个女闺蜜把我玩到尿失禁 | 国产自在线拍 | 国产综合av | 91射| 夜操操 | 色吟av | 人人人干 | 性v天堂 | 亚洲国产精品第一页 | 欧美亚洲在线观看 | 国产美女一区二区三区 | 99热播| 欧美成人资源 | 欧美黄色特级视频 | 91精品国产高清一区二区三密臀 | 厕拍极品| 国产又黄又猛 | 99热只有这里有精品 | 手机av免费在线观看 | 国产精品一二区在线观看 | 亚洲男女激情 | 淫欲av | 无码日韩精品视频 | 久久久夜色精品亚洲 | 亚洲激情综合网 | 免费在线日韩av | 日韩有码在线视频 | 香蕉视频网站在线观看 | 男女调教视频 | 国产又粗又大又爽 | 精品国产一区二区三区日日嗨 | 亚洲av成人一区二区国产精品 | 日韩成人不卡 | 在线观看国产精品一区 | 亚洲天堂一区二区 | 亚洲最大福利网站 | 爱爱亚洲 | 日韩性网站 | 日韩中出 | 超碰资源| 亚洲精品在线一区二区 | 日韩av免费一区 | 修仙淫交(高h)h文 | xxx麻豆| 91秘密入口 | 亚洲国产精品久久久久久 | 国产精品第八页 | 一区二区三区精品视频 | 人成网站在线观看 | 午夜一级视频 | 亚洲国产精品激情在线观看 | 第一章婶婶的性事 | 久久99影院 | 久久久天堂国产精品女人 | 国产成人在线观看免费网站 | 四虎影视在线 | 精品国产一区二区三区噜噜噜 | 骚视频在线观看 | 天堂影视在线观看 | 国产乱国产乱老熟300部视频 | 久久涩| 国产精品suv一区二区三区 | 麻豆成人免费视频 | 一级片一区二区三区 | japanese21ⅹxx日本 | 91偷拍一区二区三区精品 | 成人免费在线网站 | 亚洲影院在线播放 | 精品久久一二三区 | 欧美日韩色| 中文字幕av在线免费观看 | 欧美视频一区二区三区四区在线观看 | 台湾佬美性中文娱乐网 | 日本美女影院 | 国产精品污视频 | 亚洲小说在线 | 性感美女福利视频 | 久久国产热视频 | 成人一区二区三区在线 | 欧美成人另类 | 毛片免费全部无码播放 | 欧美成人hd| 久久亚洲精品小早川怜子 | 日日摸夜夜添狠狠添久久精品成人 | 亚洲AV成人无码久久精品同性 | 福利片av| 黄黄的视频在线观看 | 四虎影像| 天天爽夜夜爽夜夜爽精品 | 亚洲精品视频一区二区三区 | 国产第一色 |