Я хотел бы попросить помощи по двум запросам ниже.Они работают как брелок отдельно, теперь я хочу, чтобы они работали вместе.
Они оба обслуживают базу данных карт лояльности.
Первый получает различную информацию о пользователе, основываясь на его уникальномномер карты (% 1111% , % 2222% , % 3333% в приведенном ниже примере) и возвращает строки в произвольном порядке в которых были указаны номера карт.
SELECT cardnumber, first_name || ' ' || last_name
FROM (
SELECT cardnumber, first_name, last_name, c.OrderNo
FROM ag_cardholder ch, (SELECT '%1111%' cardmask, 1 OrderNo from dual
UNION ALL
SELECT '%2222%', 2 OrderNo from dual
UNION ALL
SELECT '%3333%', 3 OrderNo from dual
) c
WHERE ch.cardnumber LIKE c.cardmask
Order by c.OrderNo
) t
Второй код возвращает баланс текущих баллов карты на основе номера карты и типа терминала, который последний раз использовался для записи точеккарта.Существуют два типа терминалов , которые по-разному рассчитывают фактический баланс (одному из них нужно число в столбце balance , другому нужно sum balance и total_points столбцы).
SELECT *
FROM
(SELECT
cardnumber,
(SELECT last_name || ' ' || first_name FROM ag_cardholder WHERE cardnumber = '1111'),
CASE
WHEN terminal_id LIKE 'AGHUPR9%' THEN card_balance
WHEN terminal_id LIKE 'AGHUPR7%' THEN card_balance + total_points
END
FROM ag_tranzakcio
WHERE cardnumber = '1111'
ORDER BY tran_date DESC)
WHERE ROWNUM = 1
То, что я хочу - это запрос, который выполняет обе эти задачи: получает номера карт в указанном порядке и возвращает некоторую информацию о пользователевместе с текущим балансом в том же порядке.Ваша помощь будет принята с благодарностью.
ОБНОВЛЕНИЕ: К сожалению, я недостаточно знаком с ORACLE, чтобы придумать даже решение для проб и ошибок, поэтому теперь я полагаюсь на ваше понимание.