sql-server - 如何在 SQL 中将五个表与另一个依赖项连接起来
问题描述
我想在 SQL Server 中加入五个表。顺序如下。逻辑应该是 Table1 >>>>Key : ID >>>> Table_A & Table_B (If Table1.Status = ABC then Table_A else Table_B ) >>> Key : NUMBER >>> Table2 >>> Key : Number + Item_No >> > 表3
如果以下代码可以工作,请提供帮助。
SELECT * FROM
TABLE1
LEFT JOIN (CASE WHEN status = 'ABC' THEN Table_A ELSE Table_B END ) X ON (Table1.ID = X.ID)
LEFT JOIN Table2 ON (X.NUMBER = Table2.NUMBER)
LEFT JOIN Table3 ON (Table3.CONCAT(NUMBER + Item_No) = Table2.CONCAT(NUMBER + Item_No))
解决方案
SELECT Q.*, T2.ItemNo, T2.Product, T3.Connection
FROM (
SELECT T1.ID, CASE WHEN T1.Status = 'ABC'
THEN TA.Number
ELSE TB.Number
END as Number
FROM Table1 T1
LEFT JOIN TableA TA
ON T1.ID = TA.ID
LEFT JOIN TableB TB
ON T1.ID = TB.ID
) as Q
JOIN Table2 T2
ON Q.Number = T2.Number
JOIN Table3 T3
ON T2.ItemNo = T3.ItemNo
推荐阅读
- node.js - 如何使用 mongoose 和 nodejs 删除嵌套在 Post 模式中的评论?
- html - 无法为端点构建 url 您的意思是 ' 吗?
- java - 显示正确视图的 xml
- blogger - 如果没有featuredImage博主,如何包含图片网址?
- c# - 使用标签 Unity 查找并返回最近的游戏对象
- python - 更新字典列表中的空字典会更改列表的所有元素
- java - 如果将异常传递给 Java 的 `System.out.println`,会发生什么?
- python - Python加速csv操作
- node.js - TypeError:无法读取未定义的属性'get',如何?
- javascript - 如何从 nightwatch.js 中的函数式命令返回值