首页 > 解决方案 > Laravel - 每日收入问题

问题描述

我正在尝试使用以下查询获取每日、每周、每月、每年和总收入:

$revenues = DB::table("vw_revenue_report")
->select(
    "vw_revenue_report.channel",
    DB::raw("SUM(CASE WHEN created_at = NOW() - INTERVAL 1 DAY THEN amount ELSE 0 END) daily_revenue"),    
    DB::raw("SUM(CASE WHEN created_at >= NOW() - INTERVAL 1 WEEK THEN amount ELSE 0 END) weekly_revenue"),
    DB::raw("SUM(CASE WHEN created_at >= NOW() - INTERVAL 1 MONTH THEN amount ELSE 0 END) monthly_revenue"),
    DB::raw("SUM(CASE WHEN created_at >= NOW() - INTERVAL 1 YEAR THEN amount ELSE 0 END) yearly_revenue"),
    DB::raw("SUM(vw_revenue_report.amount) total_revenue")
)
->groupBy("vw_revenue_report.channel")
->orderByRaw('vw_revenue_report.channel ASC')
->get(); 

我有问题:

DB::raw("SUM(CASE WHEN created_at = NOW() - INTERVAL 1 DAY THEN amount ELSE 0 END) daily_revenue")

通常,它应该返回当天的收入。它没有给我所需的结果。它只显示0

注意: 1. created_at 是日期时间格式

  1. 它应该按频道分组

标签: laraveleloquent

解决方案


请注意,您=... created_at = NOW() ..., 而不是中使用直接比较>=。因此,您只会匹配恰好在 24 小时前创建的收入报告记录。


推荐阅读