PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgres CASE trong ORDER BẰNG cách sử dụng bí danh

Cố gắng gói nó dưới dạng truy vấn con:

SELECT * 
FROM 
(
    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
) 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sắp xếp postgreSQL với dấu thời gian

  2. toán tử không tồn tại:uuid =bytea Java với Postgres

  3. Chuyển đổi cột bytea thành OID trong khi vẫn giữ nguyên các giá trị

  4. Cách kiểm tra phiên bản PostgreSQL của bạn

  5. Một kết xuất Postgresql có tạo ra các chuỗi bắt đầu bằng - hoặc sau - khóa cuối cùng không?