Ваш вопрос очень сложен для понимания, но, прочитав его несколько раз, я думаю, что вы пытаетесь создать отчет, основанный на нескольких запросах (показано в вашем вопросе), но хотите видеть только результаты, отличные от нуля имеет значение.
Если мое предположение неверно, уточните ваш вопрос, приведя пример того, что вы ожидаете увидеть.
Во-первых, хорошие новости (если вы действительно не хотите использовать Java, MS-Word и / или документ), вы можете сделать все это в SQL.
Вам нужно использовать объединение и производную таблицу. Вот запрос, который должен дать вам то, что вам нужно.
select qry_name, cnt
from (
SELECT 'query 1 name' as qry_name, count(*) as cnt
FROM CDSWEB.NBHISTORY
WHERE OFFICEID = 593
AND POLICYSTATUS IN (105,110,126,127,128,140,141,142,143,146,153,154,155,156,157,158,159,160,161)
AND STAGE != 9
group by qry_name
union all
SELECT 'query 2 name' as qry_name, count(*) as cnt
FROM CONTACT
WHERE OFFICEID = 593
AND SUBSYSTEMTYPE IN(1,6)
AND PRIMARYAGENT IS NULL
AND CONTACTID IN (
SELECT CONTACTID
FROM INTERESTPARTY
WHERE OFFICEID = 593
AND PARTYROLE BETWEEN 1 AND 19
AND HOLDINGID IN (
SELECT HOLDINGID
FROM INTERESTPARTY
WHERE OFFICEID = 593
AND PARTYROLE BETWEEN 10001 AND 10003
)
)
group by qry_name
union all
SELECT 'query 3 name' as qry_name, count(*) as cnt
FROM CDSWEB.INTERESTPARTY
WHERE OFFICEID = 593
AND PARTYROLE IN (10001,6,1,2)
AND CONTACTID IS NULL
group by qry_name
union all
SELECT 'query 4 name' as qry_name, count(*) as cnt
FROM CDSWEB.INTERESTPARTY
WHERE OFFICEID = 593
AND HOLDINGID IS NULL
group by qry_name
) as rep
where cnt > 0
;
Как это работает?
Во-первых, вы включаете строковый литерал в ваши индивидуальные запросы. Строковый литерал идентифицирует запрос с ненулевым счетчиком в конечном выводе.
Далее, так как вы выбираете «скалярное» значение, вы должны сгруппировать его. Многие базы данных позволяют ссылаться на имя столбца, другие позволяют группировать по позиции столбца (например, group by 1
), другие требуют повторения выражения (например, 'Query 1 name'
). Это должно быть сделано в каждом подзапросе . Вы можете использовать любой текст, который вам нравится, для столбцов qry_name, просто используйте то, что однозначно идентифицирует каждый запрос.
После этого просто объедините все ваши запросы вместе - это даст четыре записи - потому что у вас есть четыре запроса, которые возвращают одну запись каждый.
Наконец, оберните все это в производную таблицу и из четырех сгенерированных записей, просто верните те с ненулевым числом. Это бит производной таблицы:
select qry_name, cnt
from (
... Rest of your four (or more) queries go here)
) as rep
where cnt > 0