【发布时间】:2019-02-22 07:46:34
【问题描述】:
我在为以下情况定义 Transact-SQL (SQL Server) 语句时遇到问题: 表 1 和表 2 有 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
因此,我只需要一个方法,而不是一个完整的解决方案。
【问题讨论】:
-
这是作业吗?
-
“家庭作业”是什么意思?
-
请阅读How to Ask并采取行动(尤其是关于家庭作业),点击谷歌搜索“stackexhange homework”和向下投票箭头鼠标悬停文本。请展示一些有理由的工作,解释你遇到的第一个地方并提出一个具体的问题。请use text, not images/links, for text (including code, tables & ERDs)。使用图像仅是为了方便补充文本和/或无法在文本中给出的内容。如果您有代表,请使用编辑功能内联,而不是链接 - 使您的帖子独立。请阅读并采取行动minimal reproducible example。
-
Ah ok^^ -> 屏幕截图中显示了预期结果,但我将编辑我的问题。第二个 - 不,我不是学生(所以没有作业)
标签: sql-server join case exists