我有两个 CTE,它们具有完全相同的数据结构,但从两个不同的表读取数据。基于日期过滤器,我可以在 SQL 中调用 CTE(使用 IF 或 case 语句)。像这样的吗?
with combined_query as
(
select * from CTE1
union all
select * from CTE2
)
select
case when date >= '2023-01-01' select * from CTE1
else select * from CTE2 end as criteria
from combined_query
“日期”列在两个 CTE 中均可用
提前致谢。
也许尝试像这样使用
WHERE
?
with combined_query AS (
SELECT *, 'CTE1' AS source FROM CTE1
UNION ALL
SELECT *, 'CTE2' AS source FROM CTE2
)
SELECT *
FROM combined_query
WHERE (date >= '2023-01-01' AND source = 'CTE1')
OR (date < '2023-01-01' AND source = 'CTE2');