我想将null值替换为0,如果不为null,我想计算数据??
sql = "SELECT b.start,COUNT(a.resourceid) " +
"FROM t1 b,agentconnectiondetail a "+
"WHERE TO_CHAR(a.startdatetime,'%R') >= TO_CHAR(b.start,'%R') AND TO_CHAR(a.enddatetime,'%R') <= TO_CHAR(b.finish,'%R') " +
"AND a.resourceid = '"+dr[1].ToString()+"'" +
"GROUP BY 1 ORDER BY 1";
查询输出为空
我该怎么办?
答案 0 :(得分:1)
首先,您应该使用简单的数据库表创建简单查询,一些值和请求的结果可以清楚地显示您的问题。
第1部分:我想用0
替换空值要将NULL更改为某个值,您可以使用NVL()
函数。文档说: NVL表达式返回不同的结果,具体取决于它的第一个参数是否计算为NULL。
示例:
SELECT fld, NVL(fld, 0) FROM ...
第2部分:如果不是null我想计算数据
SELECT COUNT(*) FROM ... WHERE fld IS NOT NULL
答案 1 :(得分:0)
是否启动并完成两个datetime数据类型?如果它们是DATE那么%R(HH:MM)可能没有意义。
如果他们是日期时间,那么为什么不
SELECT b.start,COUNT(a.resourceid) " +
"FROM t1 b,agentconnectiondetail a "+
"WHERE startdatetime >= b.start AND a.enddatetime <= b.finish" +
"AND a.resourceid = '"+dr[1].ToString()+"'" +
"GROUP BY 1 ORDER BY 1";
如果开始和结束是日期,那么你总是可以将extend()设置为相同的startdatetime和enddatetime