Oracle sql 查询根据事务类型返回行。这用于分析目的
SELECT YEAR
, MONTH
, source
, count(distinct T.tx_id ) no_of_txn
, sum((CASE WHEN D.type = 1 THEN 1 ELSE 0 END )) A_TXN
, sum((CASE WHEN D.type = 2 THEN 1 ELSE 0 END )) d_TXN
FROM TXN_HEADER T , TXN_DETAIL D WHERE OPEN_AMT > 0
AND T.tx_id = D.tx_id (+)
AND T.tx_id in ( 23414, 23123)
GROUP BY YEAR,MONTH,source
输出
年月源 NO_OF_TXN A_TXN D_TXN 2012 09 11 2 17 2
这里明细表中的总行数为 19 (17 +2) 和标题 2 ( 2 Txn)
对我来说,所需的输出是总 txn 2、a_txn 2 和 D_txn 2。这意味着如果 txn 的 a_txn 超过 1 个,它将被视为与 D_txn 相同的 1
最终预期输出为
年月源 NO_OF_TXN A_TXN D_TXN 2012 09 11 2 2 2