【问题标题】:How to modify the text file by java language?如何用java语言修改文本文件?
【发布时间】:2019-06-11 14:47:45
【问题描述】:

我有一个数据库。出于检查目的,我们有一个脚本来计算不相关的条目。

如果 count 为 0,则表或列没有任何问题。

如果计数为 1,则表或列包含一些不相关的数据。我需要删除 word 文件中的 count (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                                                                      

我需要一个输出,比如只计算记录,而不是 count(0) 记录。

【问题讨论】:

  • 查询不清楚

标签: java ms-word document


【解决方案1】:

你的问题很难理解,但是看了几遍后,我认为你是在尝试基于多个查询生成报告(显示在你的问题中),但只想看到非零的结果很重要。

如果我的猜测不正确,请使用您期望看到的实际示例来完善您的问题。

首先,好消息是(除非您真的想使用 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

【讨论】:

  • 感谢您的回复...但我在脚本中有超过 350 个查询...如果它在 java 程序中...可能很容易处理但我不知道如何执行在java中?
  • 我需要日志文件中的这个输出......我们可以在 oracle 中得到这个输出..但是我们通过 tesxt 文件给客户端..他们需要删除计数(0)个文件.. .我需要该文本文件中的非零计数。
  • 到目前为止,您为实现这一目标做了哪些工作?你试过在谷歌上搜索吗?关于如何对 Oracle(和其他 dbms)运行查询以及如何将数据写入文件的示例实际上有数千个示例。这是查询 Oracle 的一个示例。 javatpoint.com/example-to-connect-to-the-oracle-database
猜你喜欢
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
相关资源
最近更新 更多