我正在寻找实现执行此操作的聚合函数的最佳方法:-
- 如果组仅包含一个重复值,则返回该值
- 如果该组包含任何空值,则返回空值
- 如果组包含多个值,则返回 null
以下是一些示例数据:
CREATE TABLE EXAMPLE
( ID NUMBER(3),
VAL VARCHAR2(3));
INSERT INTO EXAMPLE VALUES (1,'A');
INSERT INTO EXAMPLE VALUES (2,'A');
INSERT INTO EXAMPLE VALUES (2,'B');
INSERT INTO EXAMPLE VALUES (3,null);
INSERT INTO EXAMPLE VALUES (3,'A');
INSERT INTO EXAMPLE VALUES (4,'A');
INSERT INTO EXAMPLE VALUES (4,'A');
SQL应该是这样的: -
SELECT ID, ????( VAL ) ONLY_VAL
FROM EXAMPLE
GROUP BY ID
ORDER BY ID
我追求的结果应该是这样的: -
ID ONLY_VAL
1 A
2
3
4 A
实际上,我想在多个VAL
列上执行此操作(按相同的 分组ID
)。每个将有数百条记录ID
。
我认为这是一个有趣的问题我唯一的解决方案是 NVL、MIN 和 MAX 的混乱,似乎应该有一个更整洁的方法。