sql – 使用别名在ORDER BY中添加Postgres CASE
发布时间:2020-05-24 11:30:11 所属栏目:MsSql 来源:互联网
导读:我有以下查询在Postgres 9.1中运行良好: SELECT users.id, GREATEST( COALESCE(MAX(messages.created_at), 2012-07-25 16:05:41.870117), COALESCE(MAX(phone_calls.created_at), 2012-07-25 16:05:41.870117)) AS latest
|
我有以下查询在Postgres 9.1中运行良好: SELECT users.id,GREATEST( COALESCE(MAX(messages.created_at),'2012-07-25 16:05:41.870117'),COALESCE(MAX(phone_calls.created_at),'2012-07-25 16:05:41.870117') ) AS latest_interaction FROM users LEFT JOIN messages ON users.id = messages.user_id LEFT JOIN phone_calls ON users.id = phone_calls.user_id GROUP BY users.id ORDER BY latest_interaction DESC LIMIT 5; 但我想要做的是这样的事情: SELECT users.id,'2012-07-25 16:05:41.870117')
) AS latest_interaction
FROM users LEFT JOIN messages ON users.id = messages.user_id
LEFT JOIN phone_calls ON users.id = phone_calls.user_id
GROUP BY users.id
ORDER BY
CASE WHEN(
latest_interaction > '2012-09-05 16:05:41.870117')
THEN 0
WHEN(latest_interaction > '2012-09-04 16:05:41.870117')
THEN 2
WHEN(latest_interaction > '2012-09-04 16:05:41.870117')
THEN 3
ELSE 4
END
LIMIT 5;
我收到以下错误: 似乎我不能使用带有CASE语句的order by子句中的聚合latest_interaction的别名. 这有什么变通方法吗? 解决方法尝试将其包装为子查询:SELECT *
FROM
(
SELECT users.id,GREATEST(
COALESCE(MAX(messages.created_at),'2012-07-25 16:05:41.870117')
) AS latest_interaction
FROM users LEFT JOIN messages ON users.id = messages.user_id
LEFT JOIN phone_calls ON users.id = phone_calls.user_id
GROUP BY users.id
) Sub
ORDER BY
CASE WHEN(
latest_interaction > '2012-09-05 16:05:41.870117')
THEN 0
WHEN(latest_interaction > '2012-09-04 16:05:41.870117')
THEN 2
WHEN(latest_interaction > '2012-09-04 16:05:41.870117')
THEN 3
ELSE 4
END
LIMIT 5; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 如何让我的PUT_LINE语句显示在TOAD中?
- SQL Server数字开头的数据库表名的解决方法
- SQL Server 卸载VS2011 Developer Preview后Sql Server2008
- sql – 如果A,B,C上有一个索引,A,B上的索引是否冗余?
- Postgres类似于SQL Server中的CROSS应用程序
- sql – 在Oracle中等效的REPEAT函数
- MySQL 可以用localhost 连接,但不能用IP连接的问题解决方法
- sql-server – 如何生成我的数据库的脚本?
- SQL Server 批量替换所有表中内容
- sql – 如何编写将行号输出为列的查询?
