繁体   English   中英

如何比较两个数据集以检查其他数据集中不存在的缺失行?

[英]How to compare two datasets to check for missing rows which don't exist in the other dataset?

我建立了一个方法,该方法需要两个数据集: dataset1retirementSimpleData 它在下面的代码中基于定义为cnum的主键/数字匹配两个数据集。 我想要返回getAssets值和getSums值之间的差值,并且此方法有效,除了一个小问题。

一些存在于数据集1的cnums的不retirementSimpleData存在。 同样,这可能在retirementSimpleData存在着一些cnums可能无法在数据集1存在。 这导致没有为该cnum返回任何数据。

我想在末尾实现两次通过,以检查一个方向是否丢失了任何东西。 第二遍将以相反的方向进行检查。 但是,不确定如何实现此目标。

 public void getReportData(int index) {

        String date1 = Util.dateTimeToShortString(reportDate);
        String date2 = reportDao.getPreviousRetirementDate(date1);

        List<SurveyCompareAssetsCheckData> dataset1 = reportDao.getSurveyCheckCompareAssetsData(date1);

        List<RetSurveyAssets> retirementSimpleData = reportDao.findRetSurveyByDate(date1);

        for (SurveyCompareAssetsCheckData surveyCompareAssetsCheckData : dataset1) {
            for (RetSurveyAssets surveyCompareAssetsCheckData2 : retirementSimpleData) {
                if (surveyCompareAssetsCheckData.getCnum() == surveyCompareAssetsCheckData2.getCnum()) {
                    surveyCompareAssetsCheckData.setRetirementsimple(surveyCompareAssetsCheckData2.getSums());
                    surveyCompareAssetsCheckData.setDifference(surveyCompareAssetsCheckData.getAssets() - surveyCompareAssetsCheckData2.getSums());

注意: dataset1retirementSimpledata都使用现有的SQL pull,我不允许接触这些ull,否则我将在“ DAOImpl”中为这些方法简单地定义新的SQL。 因此,我必须处理要获取的数据,并以编程方式对此进行检查。

下面是使用我的代码生成的报告。 正如你所看到的,我结束了零,这正显示出差异(错误地)为零,因为CNUM#45,在这个例子中根本就不在第二个数据集存在(retirementSimpleData) 在此处输入图片说明

Cnum的数据类型是什么,如果为int则默认值为零。

您必须添加else-if条件进行检查,例如:

else if (surveyCompareAssetsCheckData2.getCnum()== 0){

-------- logic here --------------------

}
else if (surveyCompareAssetsCheckData.getCnum() ==0){

----------logic here -----------

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM