Sql h2字符串中可以是ISNULL或IFNULL

Sql h2字符串中可以是ISNULL或IFNULL,sql,spring,jdbc,h2,Sql,Spring,Jdbc,H2,我计算每个月的平均数量,并使用h2进行如下查询 SELECT t.truckCode, monthname(orderDate) as month, IFNULL (avg(petrolQty),0) as avgPetrolQty from truck t left join orderz o on t.truckId = o.truckId group by t.truckCode, monthname(orderDate)

我计算每个月的平均数量,并使用h2进行如下查询

SELECT t.truckCode,   
        monthname(orderDate)  as month, 
        IFNULL (avg(petrolQty),0) as avgPetrolQty 
from  
   truck t left join orderz o 
on 
   t.truckId = o.truckId 
group by t.truckCode, monthname(orderDate) 
order by t.truckCode, monthname(orderDate)
所以我得到0如果平均值为空,这是好的,但它是一个左连接,我想使用,所以我可以看到系统中的所有卡车。问题是,当truck从未收到订单monthname(orderDate)返回null时,我如何更改它以获得一些默认值,我尝试了ifnull,但不起作用,我更希望返回一个字符串,例如,not布告

对于查询above,这是我的结果

TRUCKCODE   MONTH   AVGPETROLQTY  
BY2004  null    0.0
BY2354  January 13.0
BY2874  January 13.0
BY2994  null    0.0
BY8754  January 13.0
如何将null更改为某个默认字符串

 SELECT t.truckCode,  COALESCE(monthname(orderDate),'Not Announced')  as month,  IFNULL (avg(petrolQty),0) as avgPetrolQty 
from  truck t left join orderz o  
on  t.truckId = o.truckId 
group by t.truckCode, monthname(orderDate)  
order by t.truckCode, orderDate

您可以使用COALESCE函数检查月份是否为空,然后使用默认值,如“Not Announced”

SELECT t.truckCode,   
        COALESCE(monthname(orderDate),'Not Announced')  as month, 
        IFNULL (avg(petrolQty),0) as avgPetrolQty 
from  
   truck t left join orderz o 
on 
   t.truckId = o.truckId 
group by t.truckCode, COALESCE(monthname(orderDate),'Not Announced') 
order by 1,2;

Result:
TRUCKCODE   MONTH   AVGPETROLQTY  
BY2004  Not Announced 0.0
BY2354  January 13.0
BY2874  January 13.0
BY2994  Not Announced    0.0
BY8754  January 13.0

这能解决monthname为null的问题吗?不,也是同样的问题。我想解决orderDate为null的问题。你能粘贴查询的结果吗?将monthname部分更改为CASE WHEN(orderDate为null,然后“NOT ANNOUNCED”(未公布)或者monthname(orderDate)您好,我刚刚发布了上一次查询的结果,您能安排您的查询以便我能理解它或将其放置在何处吗?我对某些函数不熟悉@Gracianojust更新了我的代码说订单日期必须在group by中,似乎coalesce通过已写入的范围隐藏了group by。select语句中的函数作为最后一步完成。因此,它不会成为影响group by子句。但由于某些原因,它只在我在group by中添加额外的orderDate时起作用,为什么我发布了它检查您发布了我的答案,那么您获得vs到我的答案查询的结果是什么?