Ms access 感谢您的反馈。 TransID FieldA FieldB FieldC Amount Status 001 John Doe Sr 1.00 Hold 002 John

Ms access 感谢您的反馈。 TransID FieldA FieldB FieldC Amount Status 001 John Doe Sr 1.00 Hold 002 John ,ms-access,duplicates,sql-update,Ms Access,Duplicates,Sql Update,感谢您的反馈。 TransID FieldA FieldB FieldC Amount Status 001 John Doe Sr 1.00 Hold 002 John Doe Sr -1.00 Hold 003 John Doe Sr 1.00 Hold UPDATE [Table1] SET [Status] = "Ap

感谢您的反馈。
TransID   FieldA   FieldB   FieldC   Amount   Status
001       John     Doe      Sr       1.00     Hold
002       John     Doe      Sr       -1.00    Hold
003       John     Doe      Sr       1.00     Hold
UPDATE [Table1] 
SET [Status] = "Approved"
WHERE [TransID] = (
    SELECT a.minTransID
    FROM (Select Min(TransID) as minTransID, FieldA, FieldB, FieldC, Amount
        FROM Table1
        Where Amount > 0
        Group By FieldA, FieldB, FieldC, Amount
        ) a
    INNER JOIN (
        Select Min(TransID) as minTransID, FieldA, FieldB, FieldC, Amount
        FROM Table1
        Where Amount < 0 and Status = "Hold"
        Group By FieldA, FieldB, FieldC, Amount
        ) b on a.FieldA = b.FieldA and a.FieldB = b.FieldB and a.FieldC = b.FieldC
    )
OR [TransID] =(
    SELECT B.minTransID
    FROM (Select Min(TransID) as minTransID, FieldA, FieldB, FieldC, Amount
        FROM Table1
        Where Amount > 0
        Group By FieldA, FieldB, FieldC, Amount
        ) a
    INNER JOIN (
        Select Min(TransID) as minTransID, FieldA, FieldB, FieldC, Amount
        FROM Table1
        Where Amount < 0 and Status = "Hold"
        Group By FieldA, FieldB, FieldC, Amount
        ) b on a.FieldA = b.FieldA and a.FieldB = b.FieldB and a.FieldC = b.FieldC
)