【发布时间】:2013-09-17 12:34:49
【问题描述】:
我有一个查询需要根据其他字段采用不同的顺序。可以在ORDER BY 中使用CASE 语句,到目前为止一切正常。唯一似乎不可能的事情是更改升序/降序部分。
我的查询:
SELECT articleid, MIN(createtime) min, MAX(createtime) max
FROM items
GROUP BY articleid
ORDER BY
CASE WHEN logic='foo' THEN min ELSE '0001-01-01 00:00:00' END ASC,
CASE WHEN logic='bar' THEN max ELSE '0001-01-01 00:00:00' END DESC;
有效,但我想知道是否可以制作这样的表格(我知道这不起作用):
SELECT articleid, MIN(createtime) min, MAX(createtime) max
FROM items
GROUP BY articleid
ORDER BY
CASE WHEN logic='foo' THEN min ASC ELSE max DESC END;
【问题讨论】:
-
您不能将
ASC和DESC放在机箱内。它仅适用于您要排序的整个表达式。
标签: sql-order-by case postgresql-9.2