【问题标题】:Access 2003 VBA / Sql Update TableA on count condition also in TableAAccess 2003 VBA / Sql Update TableA on count condition也在TableA中
【发布时间】:2012-04-11 03:19:07
【问题描述】:

我对 Sql 非常陌生,并且无法将我的大脑包裹在语法上。我有一个表 PM(带有字段 Acct、Amt、Action、Reason),并且我需要更新表中的一些字段,只要 count(Acct)>1 并且 Amt 是相同的。具体来说,基于这个select语句:

SELECT PM.Acct, PM.Amt
FROM PM
GROUP BY PM.Amt
HAVING (((Count(PM.Acct))>1));

无论如何,该代码返回我知道需要更改的记录。一旦有人解释它,我相信它会很明显,但我被卡住了。

【问题讨论】:

    标签: sql vba count ms-access-2003


    【解决方案1】:

    您可以这样做,那么您仍然使用您的GROUP BY 作为您的Amt。这在 MS Access 2003 中进行了测试,仅更新子查询中的记录:

    UPDATE PM
    SET PM.Amt = newValue
        , (other fields and values)
    WHERE EXISTS
    (
        SELECT t.Acct, t.Amt
        FROM PM t
        WHERE PM.Acct = t.Acct
        GROUP BY t.Acct, t.Amt
        HAVING Count(t.Acct)>1
    )
    

    【讨论】:

    • 我明白你在做什么,这有很大帮助,但我得到一个错误:你试图执行一个不包含指定表达式“Acct”的查询作为聚合函数的一部分.
    • 您可以在子查询中添加 GROUP BY, t.Acct。我编辑了我的答案
    • 我仍然收到错误消息,但这是数据类型不匹配的问题,这完全取决于我。谢谢!
    • 如果此解决方案适合您,请务必通过左侧的复选标记将其标记为已接受的答案。
    猜你喜欢
    • 2018-06-12
    • 2020-01-27
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多