我需要一个SQL查询来将TableA中列的字符串内容映射到TableB中的一组列。它看起来像这样:
TableA
| ID | Status |
---------------
| 0 | "full" |
| 1 | "part" |
| | |
TableB
| ID | full | part |expire|
--------------------------
| 0 | true | false| false|
| 1 | false| true | false|
| | | | |
我正在使用MS Access,目前这就是我所拥有的:
SELECT * FROM TableA INNER JOIN TableB ON TableA.ID = TableB.ID
根据ID正确匹配两个表。但是,我不知道从哪里开始。假设以下内容添加到TableA:
{ID:2, Status:"Expire"}
如何将其从TableA映射到TableB?理想情况下,这将在1个查询中完成。
非常感谢提前! :)
答案 0 :(得分:1)
对每列使用IIf()
功能。
SELECT ID,
IIf([Status]='full', True, False) AS [full],
IIf([Status]='part', True, False) AS [part],
IIf([Status]='expire', True, False) AS [expire]
FROM Table1
答案 1 :(得分:1)
你的问题不够明确。
如果要从TableA重新创建TableB,请在查询中使用 IIf(expr,truepart,falsepart)函数。 以下示例(添加状态字段 - 您可以将其排除):
Select ID,Status, IIf([Status]="full", true, false) as full, IIf([Status]="part", true, false) as part,IIf([Status]="expire", true, false) as expire from TableA
如果您打算加入这两个表,那么使用LEFT OUTER连接,它将包括TableA中的所有行。在这种情况下,第3行将具有布尔标志的空值,因为没有匹配的行。
SELECT TableA.ID,Status,full,part,expire FROM TableA LEFT JOIN TableB ON TableA.ID = TableB.ID
此致 Bikxs