在Oracle中,您可以使用LISTAGG
函数将多行合并为一行,同时处理空值
-- 假设您有一个名为employees的表,包含name和group_id字段
CREATE TABLE employees (
id NUMBER,
name VARCHAR2(100),
group_id NUMBER
);
-- 插入一些示例数据
INSERT INTO employees (id, name, group_id) VALUES (1, 'Alice', 1);
INSERT INTO employees (id, name, group_id) VALUES (2, 'Bob', 1);
INSERT INTO employees (id, name, group_id) VALUES (3, 'Charlie', 2);
INSERT INTO employees (id, name, group_id) VALUES (4, NULL, 2);
INSERT INTO employees (id, name, group_id) VALUES (5, 'David', 2);
-- 查询以获取每个group_id的name列表,同时处理空值
SELECT
group_id,
LISTAGG(COALESCE(name, 'NULL'), ', ') WITHIN GROUP (ORDER BY id) AS names
FROM employees
GROUP BY group_id;
在这个示例中,我们首先创建了一个名为employees
的表,并插入了一些示例数据。然后,我们使用LISTAGG
函数将具有相同group_id
的员工姓名连接在一起。在连接姓名时,我们使用COALESCE
函数将空值替换为字符串'NULL'(或者您希望使用的任何其他字符串)。最后,我们使用GROUP BY
子句按group_id
对结果进行分组。
执行上述查询后,您将获得以下输出:
GROUP_ID | NAMES
---------+-----------------------
1 | Alice, Bob
2 | Charlie, NULL, David
这个结果显示了每个group_id
对应的员工姓名列表,其中空值已被替换为'NULL'。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云