根据条件调用 CTE - Case 语句 SQL

问题描述 投票:0回答:1

我有两个 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 中均可用

提前致谢。

sql subquery case common-table-expression
1个回答
0
投票

也许尝试像这样使用

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');
© www.soinside.com 2019 - 2024. All rights reserved.