我有三栏:
BAN OPCO PROVIDER
---------------------------
ab123 2800 2800
ab124 2800 not in use
ab125 2800 2800
ab126 2900 TEST
我正在尝试得到以下结果
BAN OPCO PROVIDER
---------------------------
ab123 2800 not in use
ab124 2800 not in use
ab125 2800 not in use
ab126 2900 TEST
我的查询仅返回带有
ab124
和 ab126
的行,但不返回 ab123
和 ab125
。
使用
MAX(provider) KEEP (DENSE_RANK LAST ORDER BY LENGTH(provider))
作为分析函数:
SELECT ban,
opco,
MAX(provider)
KEEP (DENSE_RANK LAST ORDER BY LENGTH(provider))
OVER (PARTITION BY opco) AS provider
FROM billing;
对于样本数据:
CREATE TABLE billing (ban, opco,provider) AS
SELECT 'ab123', '2800', '2800' FROM DUAL UNION ALL
SELECT 'ab124', '2800', 'not in use' FROM DUAL UNION ALL
SELECT 'ab125', '2800', '2800' FROM DUAL UNION ALL
SELECT 'ab126', '2900', 'TEST' FROM DUAL
输出:
禁令 | OPCO | 提供商 |
---|---|---|
ab123 | 2800 | 未使用 |
ab124 | 2800 | 未使用 |
ab125 | 2800 | 未使用 |
ab126 | 2900 | 测试 |