国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

橫豎表相互轉換SQL

2019-11-08 20:36:38
字體:
來源:轉載
供稿:網友

Oracle數據庫為例,測試在數據處理中經常遇到數據庫中橫表和豎表的相互轉換,采用學生各科成績分數為測試數據

橫表轉換豎表:

CREATE table score(   username varchar(10) ,   chinese  int ,   math     int ,   physics  int); INSERT into score(username , chinese , math , physics) values('Kay',74,83,93);INSERT into score(username , chinese , math , physics) values('Jim',75,84,94);INSERT into score(username , chinese , math , physics) values('Lily',86,49,91); COMMIT; SELECT * FROM score;

橫表轉換成豎表關鍵在于如何把一條記錄轉換成多條記錄,三個分數字段對應三條記錄,可以采用一個只有三條記錄中間表和score表做笛卡爾積把一條記錄copy成三條記錄

WITH T AS( SELECT 'chinese' course FROM dual  UNION ALL  SELECT 'math'    course FROM dual  UNION ALL   SELECT 'physics' course FROM dual) SELECT username,course,decode(course,'chinese',chinese,'math',math,'physics',physics)   FROM score ,T  ORDER BY username ,course;豎表轉換橫表:

SELECT * FROM course;

豎表轉換橫表關鍵在于如何把多條記錄合并成一條記錄,按照username進行group by 使用聚合函數把多條合并成一條且按不同的類別值合并到不同的字段

SELECT username,        MAX(decode(course,'chinese',score)) chinese,       MAX(decode(course,'math',score)) math,       MAX(decode(course,'physics',score)) physics  FROM courseGROUP BY usernameORDER BY username


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平原县| 漳平市| 南京市| 射洪县| 偏关县| 仙游县| 濮阳市| 石景山区| 古蔺县| 兴安县| 科技| 宿州市| 榆树市| 巴南区| 阿合奇县| 老河口市| 志丹县| 台江县| 达拉特旗| 抚州市| 黄平县| 民权县| 潞城市| 普格县| 乌拉特后旗| 米易县| 张家口市| 江北区| 鄢陵县| 资中县| 丽江市| 北票市| 安乡县| 许昌县| 太原市| 赤壁市| 土默特左旗| 丰原市| 沛县| 津市市| 河北省|