删除Access 2010中的相反值

时间:2013-01-03 17:34:08

标签: ms-access duplicates ms-access-2010

我有一个数据库,其中包含几个月的数据需要在报告之前进行清理。然而,在试图清理它时,我已经了解到存在一些使问题复杂化的问题。首先,背景。

  1. 我需要查看三个状态代码:1(已批准),3(已撤消)和4(撤消)。

  2. 每个状态4都可归因于状态1或状态3.在完美世界中,只要输入4,状态1就会更改为状态3,但这并不总是发生在我们获得的报告的时间范围内,然后将其导入数据库。

  3. 状态4具有负数量,是逆转。此数量取消1或3的数量。

  4. 每条记录都有两个单独的识别号码,4号状态记录与1号或3号记录不匹配,除非其数量为负,几乎在所有情况下服务日期都匹配。

  5. 每条记录还有一个识别客户ID,这有助于我手动将4s与1s和3s匹配。

  6. 现在,问题是:

    如何编写基本上执行以下操作的查询:

    如果两条记录之间的服务日期和客户ID匹配, AND记录1的数量取消记录2的数量(qtyR1 + qtyR2 = 0)然后删除记录的两个。或者至少删除状态1或状态3记录,因为这样我就可以轻松地为状态4记录写一个删除查询。

    我很乐意回答任何问题,因为我不确定我是否完全清楚背景。

1 个答案:

答案 0 :(得分:0)

这会删除qtyR1 + qtyR2 = 0记录开头:

DELETE *
FROM myTable A
WHERE
    EXISTS (
        SELECT * FROM myTable B
        WHERE
            B.CustID = A.CustID AND
            B.Date = A.Date AND
            ((A.Status = 1 AND B.Status = 2) OR (A.Status = 2 AND B.Status = 1)) AND
            A.Quantity + B.Quantity = 0
    )