PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgres CASE w kolejności BY przy użyciu aliasu

Spróbuj zapakować to jako podzapytanie:

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. problem npgsql w aplikacji c# - istniejące połączenie zostało wymuszone przez zdalnego hosta

  2. Atomowo ustaw wartość SERIAL podczas zatwierdzania transakcji

  3. Funkcje refaktoryzacji, aby można było ich używać w ramach CTE

  4. dołącz do dwóch różnych tabel i usuń zduplikowane wpisy

  5. Concat wiersze w Postgres