我在KnexJS原始查询中使用别名时遇到问题。
如果我在不使用别名的情况下运行整个查询,则以下部分有效。
以下带有别名的部分无效
(case when finish_time is not null then 1 else null end) as count_finished
))这是我要运行的整个查询。
.table("task_history")
.count(db.raw("distinct date"))
.where('store_id', request.params.storeid)
.where('date', '>', function() {
this.select('date')
.from(function() {
this.select('date')
.table("task_history")
.first()
.count('* as count_all')
.count(db.raw(`(case when
finish_time is not null
then 1 else null
end) as count_finished`))
.where('store_id', request.params.storeid)
.groupBy('date')
.orderBy('count_finished', 'asc')
.orderBy('date', 'desc')
.as('get_max_date')
})
});
有人知道为什么会这样吗?
[更新]:这是我的解决方法。
.select( db.raw("count(case when finish_time is not null then 1 else null end) as count_finished"))
谢谢。
答案 0 :(得分:1)
可能您只需要这样做:
.select(knex.raw('count(distinct ??) as bar', ['columnName']))