【发布时间】:2017-04-28 16:17:35
【问题描述】:
我有两张桌子需要加入,但我很难做到。这是一个简化的例子:
表 1 (T1) 的字段: 客户 ID, 产品 ID, 类型_ID
表 2 (T2) 的字段: 客户 ID, 产品 ID, 类型_ID, 结果
问题是: 我需要表一中的所有值。如果 T1.Cust_ID 为 Null,则我需要 T2 中具有相同 Prod_ID 和 Type_ID 的所有行。如果 T1.Cust_ID 不是 Null,那么我只需要 T2 中的行,其中 T1.Cust_ID=T2.Cust_ID 具有相同的 Prod_ID 和 Type_ID。
我的第一次尝试是进行联合查询:
Select T1.Cust_ID, T1.Prod_ID, T1.Type_ID, T2.Results
From T1 left join T2
On T1.Cust_ID=T1.Cust_ID and T1.Prod_ID=T2.Prod_ID and T1.Type_ID=T2.Type_ID
Where T1.Cust_ID is not Null
Union
Select T1.Cust_ID, T1.Prod_ID, T1.Type_ID, T2.Results
From T1 left join T2
On T1.Prod_ID=T2.Prod_ID and T1.Type_ID=T2.Type_ID
Where T1.Cust_ID is Null
我知道这是一种粗暴的方法,但它适用于一个领域。现在我需要在多个字段上具有相同类型的条件,我想知道如何动态地做到这一点。我在网上寻找解决方案,但在这种情况下找不到任何人。
有相同问题的想法或链接吗? 谢谢
【问题讨论】: