【问题标题】:Append new records base on date根据日期追加新记录
【发布时间】:2015-04-21 21:40:23
【问题描述】:

我有一个合并表,我每天都会删除它并再次添加所有记录。我想要一个仅追加比上次日期更新的记录。

MS Access 查询是:

INSERT INTO combine ( date_c, purpose_F, login_name, channel_name_F, FCR_A, source, date_update, FCR_2G, FCR_W, [Year], [Month], [Day], quarter, [counter], agent_name, sup )
SELECT Fcr_all.date_c, Fcr_all.purpose, Fcr_all.login_name, Fcr_all.channel_name, Fcr_all.FCR_A, "FCR" AS source, Date() AS CURDATE, Fcr_all.FCR_2G, Fcr_all.FCR_W, Year([date_c]) AS Y, Month([date_c]) AS M, Day([date_c]) AS D, DatePart('q',[date_c]) AS Q, "1" AS [count], Roster.agent_name, Roster.Supervisor
FROM Fcr_all LEFT JOIN Roster ON Fcr_all.login_name = Roster.tCAM;

我是一种追加比上次日期更新的记录的方法。记录日期字段是 date_c

示例 我有: 2015 年 4 月 1 日的 256 条记录, 2015 年 4 月 2 日的 800 条记录, 2015 年 4 月 3 日的 500 条记录,

-> 我想追加 2015 年 4 月 4 日和 2015 年 4 月 5 日的 900 条记录

最简单的方法是什么?

【问题讨论】:

    标签: sql ms-access ms-access-2007 ms-access-2010


    【解决方案1】:

    只需添加一个过滤date_cWHERE 子句,使其大于combine 中的最大值date_c

    INSERT INTO combine ( date_c, purpose_F, login_name, channel_name_F, FCR_A, source, date_update, FCR_2G, FCR_W, [Year], [Month], [Day], quarter, [counter], agent_name, sup )
    SELECT Fcr_all.date_c, Fcr_all.purpose, Fcr_all.login_name, Fcr_all.channel_name, Fcr_all.FCR_A, "FCR" AS source, Date() AS CURDATE, Fcr_all.FCR_2G, Fcr_all.FCR_W, Year([date_c]) AS Y, Month([date_c]) AS M, Day([date_c]) AS D, DatePart('q',[date_c]) AS Q, "1" AS [count], Roster.agent_name, Roster.Supervisor
    FROM Fcr_all LEFT JOIN Roster ON Fcr_all.login_name = Roster.tCAM
    WHERE date_c > (select MAX(date_c) from combine)
    

    【讨论】:

    • 我在另一个已经使用 WHERE 子句的查询中做同样的事情我可以添加另一个条件示例:'WHERE (((Csat_all.login_name) Like " srtt-*")) & (Csat_all.date_completed > (select MAX(date_c) from combine);' 为什么不起作用?
    • & 替换为AND。此外,您在最后缺少一个右括号。
    • 我修复了它必须使用 AND。谢谢
    • 很抱歉一直打扰您。我对 combine 表有 2 个附加查询。每个查询在附加名称时都有一个名为 sourcefield,它指示数据的来源。在代码上,我想添加一个 where 子句。从组合表的来源获取最大日期。 WHERE (((Csat.date_completed)>(select MAX(date_c) from combine where "combine.source =" & 'CSAT')) AND ((Csat.login_name) Like "srtt-*"));这段代码有什么问题?我想我是对的。
    • Csat 查询运行良好,尝试使用另一个查询并追加 0 条记录 这是 SQL 代码:WHERE (((Fcr.date_c)> (select MAX(date_c) from combine where "combine.source =" & 'FCR'))); 为什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2019-10-14
    • 2013-10-02
    相关资源
    最近更新 更多