我在一个大查询中有一个subquery
,它会在某个时间返回多个值,有时只返回一个值。以下是我的查询和返回值
select tran.customer_type from transaction_record tran where tran.TRANSACTION_ID=txn.id
customer_type可以是2条记录 - " LP"和" NA"
或
customer_type可以是2条记录 - " SOEMTHING ELSE"和" NA"
或
customer_type可以是1条记录 - " NA"
这里我的探测器是如果我有2条记录我必须打印没有NA
的值,如果我有一条记录我必须打印什么是值
答案 0 :(得分:1)
效率不高(2个查询),但它应该有效!
内部查询计数状态,每组ID组合和外部查询 删除所有在同一ID上有另一条记录的NA状态。
最里面的查询仅适用于表格模拟(我更喜欢创建表格,插入脚本)。
SELECT * FROM
(
SELECT status, id, count(*)
OVER (PARTITION BY id ORDER BY 3 ) AS rn
from (
SELECT 'NA' status, 1 id FROM dual
UNION ALL
SELECT 'LP' status, 1 id FROM dual
UNION ALL
SELECT 'NA' status, 2 id FROM dual
UNION ALL
SELECT 'SOEMTHING ELSE' status, 2 id FROM dual
UNION ALL
SELECT 'NA' status, 3 id FROM dual
UNION ALL
SELECT 'NA' status, 5 id FROM dual
UNION ALL
SELECT 'LP' status, 5 id FROM dual
UNION ALL
SELECT 'NA' status, 6 id FROM dual
UNION ALL
SELECT 'SOEMTHING ELSE' status, 6 id FROM dual
UNION ALL
SELECT 'NA' status, 22 id FROM dual
))
WHERE NOT (status = 'NA' AND rn=2)