PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgres CASE в ORDER BY с помощта на псевдоним

Опитайте се да го обвиете като подзаявка:

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. Как да зададете правилни имена на атрибути към json обобщен резултат с клауза GROUP BY?

  2. Изберете клетки от ред като нови колони

  3. PostgreSQL - Връща съдържанието на реда, когато UPDATE е неуспешно

  4. Убийте сесия/връзка на postgresql

  5. Имате нужда от бърз метод за преобразуване на голямо количество double в низ