You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为嵌套查询传递可变条件?Excel ADODB场景实现

需求说明

我为该问题投入了大量精力,若需补充任何信息请告知。
我需要以一种目前未找到的方式合并表格,将在Excel的ADODB中执行查询,因此希望使用单个带可变条件的查询实现。

简化场景

表A(每日设置表)

dayprebatchsetting
monD11
monD22
monD32
monD45
monD58
thuD12
thuD24
thuD36
thuD48

表B(填充数据表)

dateprebatchbatchvalue
27-5D1BBD120
27-5D2BBD321
28-5D1BBD430
28-5D3BBD830

预期合并结果

按prebatch关联两表,显示某日所有设置及对应的填充数据:

dayprebatchsettingbatchvalue
monD11BBD120
monD22BBD321
monD32
monD45
monD58
thuD12BBD430
thuD24
thuD36BBD830
thuD48

真实数据情况

  • 设置表:结构与简化场景表A类似,包含preBatch、planEind、sort、dag等字段
  • 填充数据表:结构与简化场景表B类似,包含date、preBatch、batch、labActPak、labVerwEind等字段

尝试过的查询方案

方案1:结果包含错误日期数据

查询语句:

SELECT tbl_inst_lab.preBatch,
   tbl_data_lab.batch, 
   tbl_data_lab.labActPak, 
   tbl_inst_lab.planEind, 
   tbl_data_lab.labVerwEind, 
   tbl_data_lab.labWerkelEind, 
   tbl_data_lab.labWerkelEindRevIV, 
   tbl_inst_lab.sort, 
   tbl_inst_lab.dag
FROM tbl_inst_lab 
LEFT JOIN tbl_data_lab 
   ON tbl_inst_lab.preBatch = tbl_data_lab.preBatch
WHERE ( ((tbl_data_lab.batch)=IIf([datum]=#5/16/2024#,[batch],"")) 
         AND ((tbl_inst_lab.dag)="do")
      ) 
    OR (((tbl_inst_lab.dag)="do"))
ORDER BY tbl_inst_lab.sort;

问题:返回结果包含非目标日期的填充数据。

方案2:结果正确但过于复杂

查询语句:

SELECT DISTINCT tbl_inst_lab.preBatch, 
    IIf([tbl_data_lab].[datum]=#5/16/2024#,[tbl_data_lab].[batch]) AS exprBatch, 
    IIf([tbl_data_lab].[datum]=#5/16/2024#,[labActPak]) AS exprlabActPak, 
    tbl_inst_lab.planEind, 
    IIf([tbl_data_lab].[datum]=#5/16/2024#,[labVerwEind]) AS exprlabVerwEind, 
    IIf([tbl_data_lab].[datum]=#5/16/2024#,[labWerkelEind]) AS exprlabWerkelEind, 
    IIf([tbl_data_lab].[datum]=#5/16/2024#,[labWerkelEindRevIV]) AS exprlabWerkelEindRevIV, 
    tbl_inst_lab.sort, tbl_inst_lab.dag
FROM tbl_inst_lab 
LEFT JOIN tbl_data_lab 
    ON tbl_inst_lab.preBatch = tbl_data_lab.preBatch
WHERE (((tbl_inst_lab.dag)="do"))
ORDER BY tbl_inst_lab.sort;

问题:需要为每个填充数据表字段编写IIf表达式,语句冗余复杂。

其他尝试

  • 尝试过嵌套查询(查询C以设置表A和带条件的填充数据查询B为输入),但无法为查询B传递可变条件;
  • 曾在Access中用固定条件实现,但需要在Excel ADODB中使用可变条件执行查询;
  • 尝试UNION,但两表字段数量不一致无法使用。

寻求更简洁的单查询解决方案,支持在Excel ADODB中传入可变日期条件。

内容的提问来源于stack exchange,提问作者Willie Keysers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:29:59