1. SQL问题描述
SQL的结果输出只输出结果值,但实际开发部分功能需求中,需要将列名和结果值一起输出。结果值第一行为列名。
Ø 举例说明
原结果
7369 SMITH
7499 ALLEN
要求的结果
EMPNO ENAME
7369 SMITH
7499 ALLEN
2. 解决方法:
还是基于上例进行说明:
Ø 原SQL如下
SQL> select empno,ename from emp;
Ø 执行结果如下:
7369 SMITH
7499ALLEN
7521WARD
7566JONES
7654MARTIN
7698BLAKE
7782CLARK
7788SCOTT
7839KING
7844TURNER
7876ADAMS
7900JAMES
7902FORD
7934MILLER
14 rows selected
正常情况下只返回上述14行值,不会返回上面的列名EMPNO和ENAME。为了将列名EMPNO和ENAME一起输出,将上述SQL进行改写。
Ø 改写后的SQL:
select decode(rownum, 1, 'EMPNO', col1) EMPNO,
decode(rownum, 1, 'ENAME', col2) ENAME
from(select null col1, null col2
from dual
union all
select empno col1, ename col2
from emp);
Ø 改写后的结果:
EMPNO ENAME
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS
7900 JAMES
7902 FORD
7934 MILLER
15 rows selected
执行结果也多输出一行,变成了15行。