Oracle高级查询

来源:互联网 发布:ubuntu如何下命令 编辑:程序博客网 时间:2024/05/17 08:44

Oracle中高级查询

一.使用Case查询

1.查询方式一(order by 1  根据查询出来的第一列排序)

SELECT T.HANDLED_RESULT,
       CASE HANDLED_RESULT
         WHEN '1' THEN
          '未认领'
         WHEN '2' THEN
          '已认领'
         WHEN '3' THEN
          '作废'
         ELSE
          'NO'
       END
  FROM TT_RECORD_PIECES T
  ORDER BY 1;

2.查询方式二

SELECT CASE
         WHEN T.HANDLED_RESULT = '1' THEN
          '未认领'
         WHEN T.HANDLED_RESULT = '2' THEN
          '已认领'
         WHEN T.HANDLED_RESULT = '3' THEN
          '作废'
         ELSE
          'NO'
       END
  FROM TT_RECORD_PIECES T;

3.查询方式三

SELECT
COUNT(CASE WHEN T.HANDLED_RESULT = '1' THEN 1 ELSE NULL END) one,
COUNT(CASE WHEN T.HANDLED_RESULT = '2' THEN 1 ELSE NULL END) two
FROM TT_RECORD_PIECES T;

--统计总数,统计时不建议使用count(*),因为效率慢,使用count(rowId)或者某个字段。
SELECT COUNT(1) FROM TT_RECORD_PIECES T;
--查询出来的值为0,相当于不会统计。
SELECT COUNT(NULL) FROM TT_RECORD_PIECES T; 

二、Union all,union,intersect、minus集合

1、Union all返回查询检索出来的所有行,包括重复行

2.Union返回查询检索出来的行,去除重复行

3.intersect返回重复行,正对应union中过滤掉的重复行。如下,返回test1和test2中重复行数据

select A,B from test1

intersect

select C,D from test2;

4.minus返回表一减去表二中重复数据之后的行数据。如下,返回test1减去test2中与之重复的数据之后剩余的行数据

select A,B from test1

intersect

select C,D from test2;

三、translate函数  translate(X,from_string,to_String)

1.转换字符串:函数在X字符串中查找from_String将其转换为to_string

1.SELECT translate('66666AA7777','AA','BB') FROM dual;输出结果为66666BB7777

2.转换数字:如下,将5变8,4变7,3变6,2变5,1变4.

SELECT translate(12345,54321,87654) FROM dual;输出结果为45678

三、decode函数:Decode()是Oracle以前所特有的一个函数,如果您正在使用9i及以上版本,应该用case表达式替换

SELECT decode(1,1,'aa',2,'bb','cc')  FROM dual;输出结果为aa










0 0
原创粉丝点击