我有三栏
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 | 测试 |