数据库
首页 > 数据库> > 普通的行专列;oracle行专列;更新中。。。

普通的行专列;oracle行专列;更新中。。。

作者:互联网

题记
本来想写一个完整的表创建,但是其他人都写过啦,要不这样,你们有什么行转列的问题给我留言,我直接回答如何

 

Oracle的行转列

这篇文章不错:https://blog.csdn.net/huay_li/article/details/82914161

1 SELECT
2     *
3 FROM table  
4 PIVOT(MAX(A) , MAX(B) as b, MAX(V) as c FOR (D) IN ( 'xiaoming' AS xiaoming )
其中max是函数,c是要进行循环的字段,in是循环的内容,

 

普通的行转列
 1 --nvl(a,b)->如果a不存在就显示b,否则显示a
 2 --decode,oracle独有的if,else;eg:decode(a,1,2);如果a=1,就返回2
 3  原理就是多表联查,利用全连接(full join)拼接字段
  select A.*,B.* from A
  full join B
  on A.x=B.x

 

 说到全连接 不得不说说 左连 全连的区别

转载:这篇文章生动形象;一图看懂join、left join、right join、fulljoin间的区别

INNER JOIN 关键字在表中存在至少一个匹配时返回行。

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行。FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

 

INNER JOIN 关键字在表中存在至少一个匹配时返回行。

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行。FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

标签:table2,table1,JOIN,专列,更新,左表,关键字,oracle,匹配
来源: https://blog.51cto.com/xiaoshahai/2823994