I am trying to left join
with CTE data and it’s unable to execute with following error INVALID_JOIN_ON_EXPRESSION
WITH arrayJoin([
('2024-03-20 00:00:00', '2024-03-20 23:59:59'),
('2024-03-21 00:00:00', '2024-03-21 23:59:59'),
('2024-03-22 00:00:00', '2024-03-22 23:59:59'),
('2024-03-23 00:00:00', '2024-03-23 23:59:59')
]) AS closed_dates,
closed_dates.1 AS closed_cal_datetime,
closed_dates.2 AS closed_endtime,
arrayJoin([
('2024-03-24 00:00:00', '2024-03-24 23:59:59'),
('2024-03-25 00:00:00', '2024-03-25 23:59:59'),
('2024-03-26 00:00:00', '2024-03-26 23:59:59'),
('2024-03-27 00:00:00', '2024-03-27 23:59:59')
]) AS opened_dates,
opened_dates.1 AS opened_cal_datetime,
opened_dates.2 AS opened_endtime,
date_series AS (
SELECT toDate(addDays(toDate('2024-03-20'), number)) AS datetime
FROM system.numbers
WHERE number <= dateDiff('day', toDate('2024-03-20'), toDate('2024-05-07'))
)
SELECT
cal.datetime :: date AS date
FROM
date_series cal
INNER JOIN (
SELECT
toDate('2024-03-20 00:00:00') AS cal_datetime,
toDate('2024-03-20 23:59:59') AS endtime
UNION ALL
SELECT
toDate('2024-03-21 00:00:00') AS cal_datetime,
toDate('2024-03-21 23:59:59') AS endtime
UNION ALL
SELECT
toDate('2024-03-22 00:00:00') AS cal_datetime,
toDate('2024-03-22 23:59:59') AS endtime
) dim_vi_closed_at0 ON dim_vi_closed_at0.cal_datetime = cal.datetime
INNER JOIN (
SELECT
toDate('2024-03-20 00:00:00') AS cal_datetime,
toDate('2024-03-20 23:59:59') AS endtime
UNION ALL
SELECT
toDate('2024-03-21 00:00:00') AS cal_datetime,
toDate('2024-03-21 23:59:59') AS endtime
UNION ALL
SELECT
toDate('2024-03-22 00:00:00') AS cal_datetime,
toDate('2024-03-22 23:59:59') AS endtime
) dim_vi_last_opened1 ON dim_vi_last_opened1.cal_datetime = cal.datetime
LEFT JOIN result ON result.min_start_date_time <= cal.datetime
Tried even simple LEFT CTE JOIN
WITH cte_data AS (
SELECT arrayJoin([
'2024-03-20',
'2024-03-21',
'2024-03-22'
]) AS cal
)
SELECT
cte_data.cal AS date,
result.*
FROM
cte_data
LEFT JOIN
result
ON
result.min_start_date_time <= toDate(cte_data.cal)
its the same result/error. How can we achieve the same result or query the data?