Oracle數(shù)據(jù)庫中行轉(zhuǎn)列以及Join用法總結(jié)
作者:hymer2011
本文我們主要介紹了Oracle數(shù)據(jù)庫中行轉(zhuǎn)列以及Join用法,并通過實際的例子對其用法加以說明,希望本次的介紹能夠?qū)δ兴鶐椭?/div>
Oracle數(shù)據(jù)庫中行轉(zhuǎn)列以及Join用法是本文我們主要要介紹的內(nèi)容,我們知道,在Oracle中行轉(zhuǎn)列,可以利用decode函數(shù)來實現(xiàn)。我們假設(shè)有以下的學(xué)生表A,如下所示:
ID | NAME | SUBJECT | SCORE |
1 | 張三 | 語文 | 90 |
2 | 張三 | 數(shù)學(xué) | 80 |
3 | 李四 | 語文 | 99 |
4 | 李四 | 數(shù)學(xué) | 78 |
5 | 張三 | 英語 | 89 |
現(xiàn)要轉(zhuǎn)換成下表:
NAME | 語文 | 數(shù)學(xué) | 英語 |
張三 | 90 | 80 | 89 |
李四 | 99 | 78 |
這是一個典型的行轉(zhuǎn)列過程,只需如下SQL即可:
select NAME, sum(decode(SUBJECT,'語文', SCORE, null)), sum(decode(SUBJECT,'數(shù)學(xué)', SCORE, null)), sum(decode(SUBJECT,'英語', SCORE, null)) from A group by NAME;
關(guān)于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中有沒有對應(yīng)A的記錄,都會查出A表中的所有記錄。
關(guān)于Oracle數(shù)據(jù)庫中行轉(zhuǎn)列以及Join用法總結(jié)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
責任編輯:趙鵬
來源:
CSDN博客


相關(guān)推薦




