Oracle常用方法备份
1.UNION ALL 和UNION、INTERSECT、MINUS
连接所有的查询结果、去掉重复的结果、操作返回查询结果中公共的行、在进行两个表格或者两个查询结果的时候,返回在第一个表格/查询结果中与第二个表格/查询结果不相同的记录.
2.PIVOT和UNPIVOT
可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值。
PIVOT 语法如下:
SELECT <非透视的列>,[第一个透视的列] AS <列名称>,[第二个透视的列] AS <列名称>,…
[最后一个透视的列] AS <列名称> FROM (<生成数据的SELECT查询>)
AS <原查询的别名>
PIVOT
(
<聚合函数>(<要聚合的列>)
FOR
[<包含要成为列标题的值的列>]
IN ( [第一个透视的列], [第二个透视的列],
... [最后一个透视的列])
) AS <透视表的别名>
<可选的 ORDER BY 子句>;
如:
select * from (select isadmin, user_id, user_name from userinfo) t pivot(max(user_name) for user_id in(1 as A, 2 as B, 3 as C, 4 as D))
原数据:
查询结果:
3.Rank,Dense_rank,Row_number函数
为每条记录产生一个从1开始至N的自然数,N的值可能小于等于记录的总数。这3个函数的唯一区别在于当碰到相同数据时的排名策略。
(1).Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。
(2).Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。
(3).Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。
4.oracle wm_concat(column)实现字段合并