我在为以下情况定义 Transact-SQL (SQL Server) 语句时遇到问题:有 2 个表 1 和 2,每个表都有一个 ID(主键)和 3 个属性 A、B、C。在表 1 中所有属性是强制性的,在表 2 中只有 A 是强制性的。
这意味着表 2 中或多或少是特定的记录。
我要做的是通过为表1的记录找到表2的最具体的记录来连接这两个表
我已经尝试在 case 语句之后加入,但总是出现语法错误。
指定问题:我的第一种方法是像这样用 ON Case 定义连接表达式,当然这不起作用,但是:
SELECT * FROM Table T1
JOIN Table T2 ON CASE
WHEN T1.A = T2.A AND T1.B=T2.B AND T1.C=T2.C
THEN T1.A = T2.A AND T1.B=T2.B AND T1.C=T2.C
WHEN T1.A = T2.A AND T1.B=T2.B AND T1.C!=T2.C
THEN T1.A = T2.A AND T1.B=T2.B
WHEN T1.A = T2.A AND T1.B!=T2.B AND T1.C!=T2.C
THEN T1.A = T2.A
ELSE 0
因此,我只需要一种方法,而不是一个完整的解决方案。