столбец tran_type таблицы trans_data со значениями, как «V», «M», «MC», «P»PL/SQL-Создание динамических блоков запросов на основе значения столбца
Есть несколько объединений используется в настоящее время, как:
(
select count(tran_type) Visa, to_char(request_datetime,'hh24') src_hour from trans_data where tran_type = 'V' group by to_char(request_datetime,'hh24')
) b on a.src_hour = b.src_hour left join
(
select count(tran_type) Maestro, to_char(request_datetime,'hh24') src_hour from trans_data where switched_type = 'M' group by to_char(request_datetime,'hh24')
) c on a.src_hour = c.src_hour left join
выше блок должен был бы быть повторен для дополнительных записей, как «MC» - Mastercard и «P» Paypal. В будущем может быть много других типов транзакций. Есть ли способ, приведенный выше код может быть динамически создан в зависимости от количества tran_type?
Для примера. если завтра, мы включаем «P» PayPal, динамический запрос должен выглядеть следующим образом:
(
select count(tran_type) Visa, to_char(request_datetime,'hh24') src_hour from trans_data where tran_type = 'V' group by to_char(request_datetime,'hh24')
) b on a.src_hour = b.src_hour left join
(
select count(tran_type) Maestro, to_char(request_datetime,'hh24') src_hour from trans_data where tran_type = 'M' group by to_char(request_datetime,'hh24')
) c on a.src_hour = c.src_hour left join
(
select count(tran_type) PayPal, to_char(request_datetime,'hh24') src_hour from trans_data where tran_type = 'P' group by to_char(request_datetime,'hh24')
) d on a.src_hour = d.src_hour left join
Что вы собираетесь делать с оператором SQL? Если вы просто возвращаете вызывающему абоненту слабо типизированный 'sys_refcursor', вы можете использовать динамический SQL для сборки выполняемого вами оператора SQL. Если вы пытаетесь что-то сделать с результатами в PL/SQL, вам нужно будет использовать пакет 'dbms_sql' для выполнения запроса и работы с результатами. Это существенно увеличивает сложность вашего кода. Было бы намного проще, если бы вы вернули одну строку на 'tran_type' за' src_hour', а не пытались динамически добавлять столбцы в результирующий набор. –
Это часть существующего кода ... поэтому изменение всего этого может быть проблемой ... Новое требование - избавиться от повторяющегося кода и заменить что-то, что может обслуживать будущие типы транзакций. – user2967948
Что вы делаете с оператором SQL? –