I have two tables in Postgres:
events (id, occurrence_dates) # occurrence_dates is array
dates_calendar (date)
When events.occurrence_dates consists of a few equal values, {"2017-11-08 00:00:00","2017-11-08 00:00:00"} 2 values as example, following query gives a single record:
SELECT "events".* 
FROM "events" 
   INNER JOIN dates_calendar dc ON dc.date = ALL(occurrence_dates)
How to get as many records as length of events.occurrence_dates?
UPD: i'm using Ruby on Rails, but question is provided in SQL context
Rails scope based on @michel.milezzi answer:
scope :all_events, -> do
  select("events_sb.*").from(<<-SQL.squish)
    dates_calendar dc
    INNER JOIN (SELECT *, UNNEST(occurrence_dates) oc_date FROM events) AS events_sb
    ON (events_sb.oc_date = dc.date)
  SQL
end