首页 > 解决方案 > SQL:寻找舍入重复

问题描述

我有一张桌子,似乎有交易在被撤销之前四舍五入到最接近的美元

鉴于这样的事情:

AccountID  Transaction
1           20.05
1           -20.00
1           17.00
2           32.35
3           40.78
3           -41.00
4           15.00
4           -15.00
5           10.03
5           10.00

我想看看有多少账户有这种价值模式,以及一个四舍五入的负数对应部分。因此,例如,我想从上表中提取 AccountID 1 和 3。

我对 AccountID 4 不感兴趣,因为它是一个精确(绝对值)匹配,或者 AccountID 5,它具有“四舍五入的重复”但不是否定的对应部分。

任何人都知道我可以如何在 SQL 中实现这一点?

标签: sqlsql-serverduplicatesrounding

解决方案


只需与四舍五入的值进行比较。

SELECT
    T.*
FROM
    Transactions AS T
WHERE
    EXISTS (
        SELECT
            'inverted rounded operation detected'
        FROM
            Transactions AS N
        WHERE
            T.AccountID = N.AccountID AND
            ROUND(T.[Transaction], 0) = -1 * ROUND(N.[Transaction], 0))

推荐阅读