可以在h2字符串中使用ISNULL或IFNULL

问题描述 投票:-1回答:1

我正在计算每月的平均数量,我正在使用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如果avg为null这是好的,但它是一个左连接我想使用所以我可以看到系统中的所有卡车。问题是当卡车从未有订单月份名称(orderDate)返回null,我怎么能改变它来获得一些默认值,我试过ifnull但没有工作,我宁愿返回一个字符串,例如,没有宣布

对于上面的查询,这是我的结果

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
sql spring jdbc h2
1个回答
1
投票

您可以使用COALESCE函数检查月份是否为空,然后使用“未公布”等默认值。

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
© www.soinside.com 2019 - 2024. All rights reserved.