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

在Access中构建查询:通过日期判断日类型关联表获取rate值

Access复杂查询:按日期类型匹配获取对应Rate值

嘿,我来帮你搞定这个Access查询需求!结合你描述的表结构和业务逻辑,我整理了清晰的实现思路和可直接复用的查询代码:

核心逻辑拆解

  • 第一步:识别日期类型:用Access的Weekday()函数判断日期是工作日还是周末,转换成和Table_C里day_type字段匹配的字符串('WEEKDAY'/'WEEKEND')
  • 第二步:关联表获取Rate:把Readings的日期转换结果和Table_C的day_type关联,同时保持Table_B和Table_C的原有关联关系,精准拿到对应日期的Rate值

完整查询代码

SELECT 
    r.[date],
    -- 计算当前日期对应的日类型,方便直观查看结果
    CASE 
        WHEN Weekday(r.[date], vbMonday) BETWEEN 1 AND 5 THEN 'WEEKDAY'
        ELSE 'WEEKEND'
    END AS calculated_day_type,
    c.[rate]
FROM 
    [Readings] r
INNER JOIN 
    ([Table_B] b
    INNER JOIN [Table_C] c 
        -- 替换为Table_B和Table_C实际的关联字段(比如主键/外键)
        ON b.[关联字段] = c.[关联字段]  
        -- 直接在这里匹配日类型,确保只取对应日期的Rate
        AND c.[day_type] = CASE 
                            WHEN Weekday(r.[date], vbMonday) BETWEEN 1 AND 5 THEN 'WEEKDAY'
                            ELSE 'WEEKEND'
                          END)
    -- 如果Readings和Table_B有直接关联(比如某个ID字段),替换成实际关联条件,比如r.xxx = b.xxx
    ON 1=1  
ORDER BY 
    r.[date];

关键细节说明

  • Weekday函数的小技巧:我用了Weekday(r.[date], vbMonday),把周一设为一周的第一天,这样返回值1-5对应工作日,6-7对应周末,完全符合常规的工作日定义
  • 关联条件的优化:把日类型的匹配放在Table_B和Table_C的关联里,比单独用WHERE过滤更高效,还能避免不必要的笛卡尔积
  • 占位符替换提示:记得把[关联字段]换成你实际的关联字段(比如b.id = c.table_b_id);如果Readings和Table_B有直接关联关系,一定要把ON 1=1改成对应的关联条件,这样查询逻辑会更严谨

要是你还有其他细节需要调整(比如用左连接替代内连接),随时告诉我就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:27:41