使用IN对长文本字段匹配2个表之间的值

问题描述 投票:0回答:2

我目前正在使用Access 2016,我正在尝试创建一个查询,将不同的查询和表作为其2个源元素。以下是结构示例

table:
entity           code

legal            AP01
admin            AP02
acct             AP03


query1:
date             total            billing

1/1/2019         $10              000000-AP01-abcxyz
1/5/2019         $12              000000-AP01-abcxyz
1/12/2019        $15              000000-AP02-abcxyz

我已经尝试过考虑如何进行连接,但由于某些字符串远大于255个字符,因此结算字段是一个长文本,这是不可能的。所以也许以某种方式使用IN,并且查询将在query1中的billing字段值中查找表中的代码字段值,并显示以下输出

    query2:
    date             total            billing                    entity

    1/1/2019         $10              000000-AP01-abcxyz         legal
    1/5/2019         $12              000000-AP01-abcxyz         legal
    1/12/2019        $15              000000-AP02-abcxyz         admin

使用该输出,我可以按实体和总计分组,以显示部门内的总支出。我不想要提取到excel,运行vlookup并查找,然后重新导入它以进行访问。如果我想在excel中完成所有工作,那就没有意义了。这可以在访问查询中完成吗?

sql ms-access-2016
2个回答
0
投票

你可以使用instr()

select q1.*, t1.entity
from q1 join
     t1
     on instr(q1.billing, t1.code) > 0

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 & '*'
© www.soinside.com 2019 - 2024. All rights reserved.