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 的结果。

01-18 21:47