Oracle數據庫中行轉列以及Join用法是本文我們主要要介紹的內容,我們知道,在Oracle中行轉列,可以利用decode函數來實現。我們假設有以下的學生表A,如下所示:
ID NAME SUBJECT SCORE 1 張三 語文 90 2 張三 數學 80 3 李四 語文 99 4 李四 數學 78 5 張三 英語 89現要轉換成下表:
NAME 語文 數學 英語 張三 90 80 89 李四 99 78這是一個典型的行轉列過程,只需如下SQL即可:
select NAME, sum(decode(SUBJECT,'語文', SCORE, null)), sum(decode(SUBJECT,'數學', SCORE, null)), sum(decode(SUBJECT,'英語', SCORE, null)) from A group by NAME;
關於Join:
1.inner join :
- select * from A a, B b where a.id = b.aId 與
- select * from A a inner join B b on a.id = b.aId 是一樣的;
2. left join 與left outer join:
- select * from A a left join B b on (a.id = b.aId);
此時,不管B中有沒有對應A的記錄,都會查出A表中的所有記錄。