使用 IN 针对长文本字段匹配 2 个表之间的值
Matching values between 2 tables using IN against a Long Text field
我目前正在使用 Access 2016 并尝试创建一个查询,该查询将引入不同的查询和一个 table 作为其 2 个源元素。下面是结构的例子
table:
entity code
legal AP01
admin AP02
acct AP03
query1:
date total billing
1/1/2019 000000-AP01-abcxyz
1/5/2019 000000-AP01-abcxyz
1/12/2019 000000-AP02-abcxyz
我试过考虑如何进行联接,但由于某些字符串的长度远远超过 255 个字符,因此帐单字段是一个长文本,所以这是不可能的。所以可能以某种方式使用 IN,查询将在 query1 的 billing 字段值中查找 table 中的代码字段值,并显示以下输出
query2:
date total billing entity
1/1/2019 000000-AP01-abcxyz legal
1/5/2019 000000-AP01-abcxyz legal
1/12/2019 000000-AP02-abcxyz admin
使用该输出,我可以按实体分组和总计以显示部门内的总支出。我不想提取到 excel、运行 vlookup 并查找,然后将其重新导入以进行访问。如果我只想在 excel 中完成所有操作,那将毫无意义。这可以在访问查询中完成吗?
您可以使用 instr()
:
select q1.*, t1.entity
from q1 join
t1
on instr(q1.billing, t1.code) > 0
您可以使用 like
:
select
q.*, t.entity
from query1 as q inner join tablename as t
on q.billing like '*-' & t.code & '-*'
根据您的预期结果,我假设 code
将始终以以下形式位于 billing
内:
...-AAAA-...
.
如果不是这种情况,请删除破折号并像这样使用它:
on q.billing like '*' & t.code & '*'
我目前正在使用 Access 2016 并尝试创建一个查询,该查询将引入不同的查询和一个 table 作为其 2 个源元素。下面是结构的例子
table:
entity code
legal AP01
admin AP02
acct AP03
query1:
date total billing
1/1/2019 000000-AP01-abcxyz
1/5/2019 000000-AP01-abcxyz
1/12/2019 000000-AP02-abcxyz
我试过考虑如何进行联接,但由于某些字符串的长度远远超过 255 个字符,因此帐单字段是一个长文本,所以这是不可能的。所以可能以某种方式使用 IN,查询将在 query1 的 billing 字段值中查找 table 中的代码字段值,并显示以下输出
query2:
date total billing entity
1/1/2019 000000-AP01-abcxyz legal
1/5/2019 000000-AP01-abcxyz legal
1/12/2019 000000-AP02-abcxyz admin
使用该输出,我可以按实体分组和总计以显示部门内的总支出。我不想提取到 excel、运行 vlookup 并查找,然后将其重新导入以进行访问。如果我只想在 excel 中完成所有操作,那将毫无意义。这可以在访问查询中完成吗?
您可以使用 instr()
:
select q1.*, t1.entity
from q1 join
t1
on instr(q1.billing, t1.code) > 0
您可以使用 like
:
select
q.*, t.entity
from query1 as q inner join tablename as t
on q.billing like '*-' & t.code & '-*'
根据您的预期结果,我假设 code
将始终以以下形式位于 billing
内:
...-AAAA-...
.
如果不是这种情况,请删除破折号并像这样使用它:
on q.billing like '*' & t.code & '*'