Java 当没有相应的结果集时,如何给新客户一个零

Java 当没有相应的结果集时,如何给新客户一个零,java,sql,swing,Java,Sql,Swing,这是一个关于一个月内创建了多少新客户的问题 在下面的查询中,有4种可能性 没有vip客户,没有普通客户 一个或多个VIP,但没有普通客户 无VIP,一个或多个普通客户 贵宾与普通人 在下面的java测试代码片段中 每当1发生时,什么都不显示 无论何时发生2,都不会有新的普通客户出现 每当发生3次,只有新的普通客户出现,没有新的贵宾出现 无论何时发生4,这都无关紧要 我怎样才能让它们一直出现?虽然它的计数为0,但我希望在下面的Java代码中实现这一点。有没有人能给它增加一些条件,让它成为现实

这是一个关于一个月内创建了多少新客户的问题

在下面的查询中,有4种可能性

  • 没有vip客户,没有普通客户
  • 一个或多个VIP,但没有普通客户
  • 无VIP,一个或多个普通客户
  • 贵宾与普通人
  • 在下面的java测试代码片段中

    • 每当1发生时,什么都不显示
    • 无论何时发生2,都不会有新的普通客户出现
    • 每当发生3次,只有新的普通客户出现,没有新的贵宾出现
    • 无论何时发生4,这都无关紧要
    我怎样才能让它们一直出现?虽然它的计数为0,但我希望在下面的Java代码中实现这一点。有没有人能给它增加一些条件,让它成为现实

    例如,当
    ResultSet
    包含0个新的普通客户和5个新的VIP客户时 我希望他们都出现在我的图表中,只要有5个新的普通客户和0个新的贵宾 我希望他们两个也能出现。当前,每当某一特定类型的客户没有订单详细信息时,我的意思是完全没有,该行将为空

    select ct.CustomerTypeName AS type, count(DT.CustomerCode) AS cnt , DT.Sales  
      from   
    (select ct.CustomerTypeID, ct.CustomerTypeName from customer_type  ct) ct,   
     (select 'VIP' as custType, c.CustomerCode, sum(COALESCE(od.NetSales, 0))  AS Sales   
        from  customer c LEFT JOIN    
          orders o ON (c.CUSTOMERCODE = o.CUSTOMERCODE) LEFT JOIN   
          order_details od ON (od.ORDERCODE = o.ORDERCODE) , VIPLevelUpParam v, ActiveParam a 
          where  
           TRIM(CAST(CAST(YEAR(c.CustomerCreationDate) AS CHAR(4)) AS VARCHAR(4))) || '-' || 
           TRIM(CAST(CAST(MONTH(c.CustomerCreationDate)  AS CHAR(2)) AS VARCHAR(2)))       
             =    
           '2013-11'
            group by  c.CustomerCode, v.LEVELUPAMOUNT, v.LEVELUPID, a.ACTIVEID 
             having  sum(COALESCE(od.NetSales, 0)) >= v.LevelUpAmount   
    
            union    
          ( select 'Normal' as custType,  c.CustomerCode, sum(COALESCE(od.NetSales, 0)) AS Sales   
             from  customer c LEFT JOIN    
               orders o ON (c.CUSTOMERCODE = o.CUSTOMERCODE) LEFT JOIN   
               order_details od ON (od.ORDERCODE = o.ORDERCODE) , VIPLevelUpParam v, ActiveParam a 
               where  
               TRIM(CAST(CAST(YEAR(c.CustomerCreationDate) AS CHAR(4)) AS VARCHAR(4))) || '-' ||         TRIM(CAST(CAST(MONTH(c.CustomerCreationDate)  AS CHAR(2)) AS VARCHAR(2)))       
                =    
               '2013-11'
               group by c.CustomerCode, v.LEVELUPAMOUNT, v.LEVELUPID, a.ACTIVEID 
               having  sum(COALESCE(od.NetSales, 0)) < v.LevelUpAmount   
               )
    
     ) DT  
         where ct.CustomerTypeName = custType 
       group by ct.CustomerTypeName, DT.Sales;
    

    我认为你需要更清楚地重新表述你的问题。为了更快地获得更好的帮助,请发布一篇文章。硬编码一些数据以替换数据库。
    for (YearMonth ym : mths)
    {
           String sql = getSQL(ym);
           ResultSet rs = getDB().query(sql);
    
           // condition 1
           if  (!rs.next())
           {
    
               NewCust nc = new NewCust();
               nc.setType("Normal");
               nc.setYear(ym.getYear());
               nc.setMonth(ym.getMonth());
               nc.setCnt(0);
    
               NewCustChart cc = new NewCustChart();
               cc.setType(nc.getType());
               cc.setYear(nc.getYear());
               cc.setMonth(nc.getMonth());
               cc.setCnt(0);
               lcc.add(cc);
    
               nc.setListOfCust(lcc);
    
               lNewCust.add(nc);
    
               nc.setType("VIP");
               nc.setYear(ym.getYear());
               nc.setMonth(ym.getMonth());
               nc.setCnt(0);
    
               cc = new NewCustChart();
               cc.setType(nc.getType());
               cc.setYear(nc.getYear());
               cc.setMonth(nc.getMonth());
               cc.setCnt(0);
               lcc.add(cc);
    
               nc.setListOfCust(lcc);
    
               lNewCust.add(nc);
    
    
           }
           else
           {
           // condition 2,3,4, but how do I identify which type
             do {
                NewCust nc = new NewCust();
                nc.setType(rs.getString("type"));
                nc.setYear(ym.getYear());
                nc.setMonth(ym.getMonth());
    
    
                nc.setCnt(rs.getInt("cnt"));
    
                NewCustChart cc = new NewCustChart();
                cc.setType(nc.getType());
                cc.setYear(nc.getYear());
                cc.setMonth(nc.getMonth());
                cc.setCnt(nc.getCnt());
                lcc.add(cc);
                nc.setListOfCust(lcc);
                lNewCust.add(nc);
              }while (rs.next());
         }