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

Połączenie łańcuchowe nie filtruje zgodnie z oczekiwaniami

Zrozumiałem, że potrzebuję pod-wyboru w następujący sposób:

SELECT 
  UPPER(TO_CHAR(d.start_date, 'mon')) AS month,
  EXTRACT(MONTH FROM d.start_date) AS month_num,
  SUM(t.cost_planned) FILTER (WHERE t.aasm_state IN ('open', 'planned' ) ) AS planned,
  SUM(t.cost_actual)  FILTER (WHERE t.aasm_state = 'closed') AS actual
FROM GENERATE_SERIES('2020-01-01'::date, '2020-12-01'::date, '1 month') d(start_date)
LEFT JOIN
(
SELECT t.*
FROM activity_tasks t
LEFT JOIN activities a
ON a.id = t.activity_id
WHERE a.type = 'My Type'
) AS t ON t.start_date >= d.start_date and t.start_date < d.start_date + '1 month'::interval
GROUP BY d.start_date
ORDER BY d.start_date



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernacja:Utwórz indeks

  2. SQL — Utwórz widok z wielu tabel

  3. Użyj pg_restore, aby przywrócić z nowszej wersji PostgreSQL

  4. Łączenie ciągów z wartością null wydaje się unieważniać cały ciąg — czy jest to pożądane zachowanie w Postgresie?

  5. Lista kontrolna zgodności SOx dla PostgreSQL