$result = DB::table('table_name') ->select(DB::raw('SUM(CASE WHEN status="A" THEN amount ELSE 0 END) AS sum_a'), DB::raw('SUM(CASE WHEN status="B" THEN amount ELSE 0 END) AS sum_b'), DB::raw('SUM(CASE WHEN status="C" THEN amount ELSE 0 END) AS sum_c'), DB::raw('SUM(CASE WHEN status="D" THEN amount ELSE 0 END) AS sum_d')) ->get();如果里面两条重合了where我想获取sum和count()
时间: 2024-02-23 22:00:27 浏览: 116
php mysql实现mysql_select_db选择数据库
如果您需要在查询中包含 `WHERE` 子句,并且想要同时计算金额总和和行数,您可以添加一个额外的 `SELECT` 子句来计算行数。例如,您可以这样编写查询:
```php
$result = DB::table('table_name')
->select(DB::raw('SUM(CASE WHEN status="A" THEN amount ELSE 0 END) AS sum_a'),
DB::raw('SUM(CASE WHEN status="B" THEN amount ELSE 0 END) AS sum_b'),
DB::raw('SUM(CASE WHEN status="C" THEN amount ELSE 0 END) AS sum_c'),
DB::raw('SUM(CASE WHEN status="D" THEN amount ELSE 0 END) AS sum_d'),
DB::raw('COUNT(*) AS count'))
->where('some_column', '=', 'some_value')
->get();
```
这将返回一个包含五列的结果集:`sum_a`、`sum_b`、`sum_c`、`sum_d` 和 `count`,它们分别表示满足条件的行的金额总和和行数。请注意,`COUNT(*)` 表示计算所有行的行数,不管它们是否满足 `WHERE` 子句中的条件。如果您只想计算满足条件的行数,可以使用 `COUNT(column_name)`,其中 `column_name` 是一个非空列的名称。
阅读全文