sql - 带有两个函数的条件内连接
问题描述
我有两个功能。我需要根据 BIT 值来决定是否加入这两个。
ON APEL.data_Period_dataination_Lookup_ID = CCEL.data_Period_dataination_Lookup_ID
INNER JOIN markcommon.GetPredecessordatadataIds() AS PIDS
IF @Combined_Flag=1
BEGIN
ON PIDS.data_Period_dataination_Identifier = APEL.data_Period_dataination_Identifier
AND PIDS.data_Period_Identifier = APL.data_Period_Identifier
END
基本上
if BIT=0 join with function 1 else join with function 2
我尝试放置一个 IF 子句 .. 但它似乎不起作用。正确的方法是什么?
解决方案
只需将您的静态条件添加为连接条件的一部分并使用 aLEFT JOIN
来确保它适用于缺少的行。case
然后,您可以在选择中使用表达式来获取正确的列,例如
SELECT
CASE WHEN F1.id IS NOT NULL THEN F1.MyColumn ELSE F2.MyColumn END
FROM ...
LEFT JOIN markcommon.Function1() AS F1
ON @Combined_Cohort = 1
AND {The rest of the join conditions}
LEFT JOIN markcommon.Function2() AS F2
ON @Combined_Cohort = 0
AND {The rest of the join conditions}
推荐阅读
- ios - 发布到解析服务器时,是否返回新创建的对象 ID
- oracle - 如何计算 Oracle 数据库的缓冲池响应时间?
- kubernetes - 使用 Kubernetes 将 DB2 Warehouse 部署到 IBM Cloud
- dart - 使用 Web 视图向服务器发送参数(发布方法)
- angular - 将组件与Angular 6上的其他容器组件一起添加到主体
- spring-security-oauth2 - 具有客户端身份验证和用户身份验证的 Spring Security Oauth2 配置
- php - 为什么正则表达式匹配“:www.xxx.com”
- scala - Spark Scala - 使用密钥对通过 SSH 连接到 MySQL
- excel - 使用 VBA 将 URL 文件查询中的数据导入 Excel 工作表
- vba - 根据VBA上的行号突出显示单元格