我们在实际开发过程中, 经常需要将一个查询的结果连接成一个单行的字符串列表, 比如说将一个部门及其所有员工列在一行显示.
本文介绍了从最简单到最通用的几种方法来达到这一目的.
1. 已知列的取值范围
比如说, 有以下产品表, 每种产品只有3种颜色(R-RED, B-BLACK, W-WHITE):
scott@ORCL> DESC PROD
名称 空? 类型
----------------------------------------- -------- --------------
PRODNAME VARCHAR2(20)
COLOR VARCHAR2(1)
scott@ORCL> SELECT * FROM PROD;
PRODNAME C
-------------------- -
CAR R
CAR B
CAR W
MOTOR W
MOTOR B
我们希望列出每种产品都有哪些颜色.
这种情况下, 只要简单的使用decode()函数即可.
下面是script代码及相应的运行结果.
scott@ORCL> COLUMN COLORS FORMAT A10
scott@ORCL >select PRODNAME,
2 max(decode( COLOR, ’B’, COLOR, null )) ||
3 max(decode( COLOR, ’W’, COLOR, null )) ||