Как изменить текстовый файл на языке Java? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть база данных. Для проверки у нас есть скрипт для подсчета не относящихся к делу записей.

Если число равно 0, у таблицы или столбца нет проблем.

Если счетчик равен 1, в таблице или столбце содержатся некоторые несущественные данные. мне нужно удалить количество (0) записей в файле слов.

SQL> SELECT COUNT(*) 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;

  COUNT(*)                                                                      
----------                                                                      
         0                                                                      

Elapsed: 00:00:00.01
SQL> 
SQL> --------------------------------------------------------------------------------
SQL> 
SQL> 
SQL> ---General Rule for BGAs: The Primary Advisor on the first Policy encountered for a contact should be set as the Primary Advisor associated with the contact record unless the Primary Advisor already exists on the Contact record.'(ADDED ON 27TH AUGUST BY SHYAM)-- ---
SQL> 
SQL> SELECT COUNT(*) 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));

  COUNT(*)                                                                      
----------                                                                      
        69                                                                      

Elapsed: 00:02:28.29
SQL> 
SQL> 
SQL> --------------------------------------------------------------------------------
SQL> ---INTERESTPARTY
SQL> --------------------------------------------------------------------------------
SQL> 
SQL> ---- Here are Total Record Count of Policy does not have Primary Advisor,Insured,Payer,Owner.
SQL> ---- As per SmartOfice Logic, For all converted Policy Should have Primary Advisor,Insured,Payer,Owner.
SQL> --- However, conversion may bring blank Primary Contact. Check the source database for such blank records
SQL> --- and update the release notes to provide this information.
SQL> SELECT COUNT(*) FROM CDSWEB.INTERESTPARTY WHERE OFFICEID = 593 AND PARTYROLE IN (10001,6,1,2) AND CONTACTID IS NULL;

  COUNT(*)                                                                      
----------                                                                      
         0                                                                      

Elapsed: 00:00:00.03
SQL> 
SQL> --- To Verify The All Interestparty Record Are Linked With Policy.
SQL> SELECT COUNT(*) FROM CDSWEB.INTERESTPARTY WHERE OFFICEID = 593 AND HOLDINGID IS NULL;

  COUNT(*)                                                                      
----------                                                                      
         0                                                                      

Мне нужен вывод только для подсчитанных записей, а не для отсчета (0).

1 Ответ

0 голосов
/ 11 июня 2019

Ваш вопрос очень сложен для понимания, но, прочитав его несколько раз, я думаю, что вы пытаетесь создать отчет, основанный на нескольких запросах (показано в вашем вопросе), но хотите видеть только результаты, отличные от нуля имеет значение.

Если мое предположение неверно, уточните ваш вопрос, приведя пример того, что вы ожидаете увидеть.

Во-первых, хорошие новости (если вы действительно не хотите использовать 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
...