我正在计算每月的平均数量,我正在使用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
您可以使用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