我正在使用 PostgreSQL 和 bookshelf 并尝试运行一个简单的 SQL 查询,以便在单个查询中获得多个计数。此查询如下所示:
SELECT SUM(CASE WHEN date_last_check > (now() - interval '1 MONTH') THEN 1 ELSE 0 END) as since_two_months,
SUM(CASE WHEN date_last_check > (now() - interval '7 DAY') THEN 1 ELSE 0 END) as since_one_week,
SUM(CASE WHEN date_last_check > (now() - interval '1 DAY') THEN 1 ELSE 0 END) as since_one_days
FROM myTable;
在书架CASE
的函数中做语句似乎是不可能的。sum()
我试过了:
return myTable.query(function(qb:any){
qb.sum("(CASE WHEN date_last_check > (now() - interval '1 MONTH') THEN 1 ELSE 0 END) as since_two_months")
})
这将返回以下查询:
select sum("(SUM(CASE WHEN date_last_check > (now() - interval '1 MONTH') THEN 1 ELSE 0 END)") as "since_two_months" from "myTable"
由于 ) 后的引号,这不起作用sum("
。
有谁知道如何在不使用原始查询的情况下完成这项工作?