我正在尝试创建通用查询,以便在日期选择中生成各种报告。
例如,
最近7天的订单价值,我需要跟随输出。
订单日期订单价值
2014-05-15 - 700
2014-05-16 - 0
2014-05-17 - 100
2014-05-18 - 0
2014-05-19 - 0
2014-05-20 - 0
2014-05-21 - 200
如果没有为日期显示订单数据,那么应该在该日期显示0。
答案 0 :(得分:0)
如果订单价值是当天的订单数量,那么它应该在MySQL表中默认为0。如果它不是错误并且应该修复但是我们假设您无法更改它,在这种情况下,您可以使用package com.mycompany.repository
@Repository
public interface OrderRepository extends CrudRepository<Order, Integer> {
@Query("SELECT o from Order o "
+ "WHERE o.id = COALESCE(:#{#filter.id},o.id) "
+ "AND o.status = COALESCE(:#{T(com.mycompany.enums.Status).#filter.statusName},o.status)")
public List<Order> getFilteredOrders(@Param(value = "filter") Filter filter);
}
函数在MySQL查询级别执行此操作。
假设您的表格为COALESCE
,orders_stats
为整数。
order_value
此查询的工作方式与:
相同SELECT `order_date`, COALESCE(`order_value`, 0) as `order_value` FROM `orders_stats`;
如果SELECT `order_date`, `order_value` FROM `orders_stats`;
为order_value
,则0
的差异将设置为null
。
有关COALESCE的更多信息,请访问mysql.com和w3resource.com。