国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陇南市| 北川| 抚松县| 巫溪县| 克拉玛依市| 台江县| 桂阳县| 辽宁省| 平舆县| 清原| 化德县| 崇仁县| 于都县| 嘉定区| 禹城市| 乐平市| 鄂伦春自治旗| 盐源县| 湘潭县| 雅安市| 瓦房店市| 鹤壁市| 泊头市| 武鸣县| 太仆寺旗| 奈曼旗| 兰溪市| 万载县| 施甸县| 苗栗市| 乐清市| 大连市| 柞水县| 大荔县| 龙岩市| 长宁县| 忻州市| 增城市| 永平县| 怀宁县| 珲春市|