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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆化县| 会泽县| 浦东新区| 明水县| 桐乡市| 澄迈县| 辽中县| 桂阳县| 吴旗县| 博爱县| 威远县| 双柏县| 体育| 朝阳区| 婺源县| 景谷| 六盘水市| 越西县| 德昌县| 柘荣县| 五寨县| 六枝特区| 新昌县| 桓仁| 偃师市| 博客| 湖南省| 陵水| 怀仁县| 太和县| 洛扎县| 山东| 密云县| 合阳县| 靖西县| 资源县| 大庆市| 贺州市| 陆河县| 正蓝旗| 高邮市|