В настоящее время у меня есть запрос:
-- Query 1
SELECT
acc_code, acc_name, alias, LAmt, coalesce(LAmt,0) AS amt
FROM
(SELECT
acc_code, acc_name, alias,
(SELECT
(SUM(cr_amt)-SUM(dr_amt))
FROM
ledger_mcg l
WHERE
(l.acc_code LIKE a.acc_code + '.%' OR l.acc_code=a.acc_code)
AND
fy_id=1
AND
posted_date BETWEEN '2010-01-01' AND '2011-06-02') AS LAmt
FROM
acc_head_mcg AS a
WHERE
(acc_type='4')) AS T1
WHERE
coalesce(LAmt,0)<>0
Запрос 2 такой же, как и Запрос 1, за исключением того, что acc_type = '5'
в Запросе 2. Запрос 2 всегда возвращает набор результатов с одной строкой.Теперь мне нужно объединение двух запросов, то есть
Query 1
UNION
Query 2
, только когда amt, возвращаемый Query 2, меньше 0. Иначе мне не нужно объединение, а только результат из Query 1.
Лучший способ, который я могу придумать, - это создать параметризованную скалярную функцию.Как лучше всего это сделать?