循环查询列的数据并获取临时计数

时间:2015-03-10 15:45:59

标签: sql loops stored-procedures plsql

我有一个表Transaction

Transaction
----------------
txn_id
txn_type
txn_time
txn_dt
txn_amt

样本数据

Txn_id   Txn_Type Txn_Time  Txn_dt       Txn_Amt
1        M        11:00     10-Mar        500
2        M        11:10     10-Mar        100
3        V        11:20     10-Mar        200
4        P        11:30     10-Mar        100
5        P        12:45     10-Mar        200

txn_type列可以包含“V”,“M”,“P”,“X”等值。

我需要获得以下输出

Date     HR       Description         Count
---------------------------------------------
10-Mar   11       Visa                 1
10-Mar   11       MasterCard           2
10-Mar   11       PayPal               1
10-Mar   12       PayPal               1

请注意,V = Visa,P = PayPal,M = MasterCard,X =其他

请指导我如何实现这一目标? tran_type可以每小时和每天不同。但是,我们需要找到每小时特定tran_type的不同计数,即11:00-11:59等。在任何时间内循环使用tran_type的各种可能性并获得相应的计数是高级计划。

感谢。

1 个答案:

答案 0 :(得分:0)

group by应该可以做到这一点,例如:

select txn_dt, trunc(txn_time, 'HH24') as hr, txn_type, count(*) as count
from transaction
group by txn_dt, trunc(txn_time, 'HH24'), txn_type