sql - 使用来自多个表的值填充单个列
问题描述
我有三个表如下:
订单表
| OrderID | Type | ItemID |
+----------+-----------+---------+
| 0001 | Car | A001 |
| 0002 | Motorbike | A001 |
Car_Table
| ItemID | ItemDesc |
+---------+------------+
| A001 | Honda Jazz |
Motorbike_Table
| ItemID | ItemDesc |
+---------+------------+
| A001 | Yamaha F1Z |
我需要通过添加一个名为的列将最后两个表合并到第一个表中ItemDesc
。
有什么方法可以进行查询以根据ItemDesc
列的值Car_Table
或Motorbike_Table
根据列的值填充Type
列?回答:
SELECT Order_Table.OrderID, Order_Table.Type, Order_Table.ItemID,
IIF(Order_Tbl.Type = "Car", Car_Tbl.ItemDesc, Motorbike_Tbl.ItemDesc) AS ItemDesc
FROM Order_Table
LEFT JOIN Car_Table ON Order_Table.ItemID = Car_Table.ItemID
LEFT JOIN Motorbike_Table ON Order_Table.ItemID = Motorbike_Table.ItemID;
谢谢!
解决方案
您可以使用条件聚合来获得所需的结果,从Car_table
whenType = Car
和 from Motorbike_table
when中选择一个值Type = Motorbike
:
SELECT Order_Table.OrderID, Order_Table.Type, Order_Table.ItemID,
IIF(Order_Tbl.Type = "Car", Car_Tbl.ItemDesc, Motorbike_Tbl.ItemDesc) AS ItemDesc
FROM Order_Table
LEFT JOIN Car_Table ON Order_Table.ItemID = Car_Table.ItemID
LEFT JOIN Motorbike_Table ON Order_Table.ItemID = Motorbike_Table.ItemID;
输出:
OrderID Type ItemID ItemDesc
1 Car A001 Honda Jazz
2 Motorbike A001 Yamaha F1Z
推荐阅读
- python - HTML 电子邮件在浏览器和 gmail 应用程序中运行良好,但在本机 iphone 电子邮件客户端中无法正常工作
- css - Safari 轮廓颜色
- bash - 如何使用 for 循环(或不使用)在“borg create”命令中使用键和值
- windows - cmake add_custom_target 在使用命令完成之前不会打印到 Windows 上的标准输出
- spring - 当我遇到死锁时,可能是 tomcat 9.0.26 中的错误
- javascript - 如何找到最后一个没有文本值的表格单元格并输入消息?
- json - 如何自定义 GET 返回的内容
- javascript - JavaScript 中的原型概念
- javascript - 通过不改变正文中每个元素的不透明度来显示模态
- php - 一个输入上的两种数据类型或角色