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