我的查询返回重复项

时间:2015-08-04 21:35:45

标签: sql sql-server database duplicates

我编写了一个SQL查询来过滤许多条件,并使用distinct来查找唯一的记录。

具体来说,我只需要uintmax_t字段是唯一的,每个<stdint.h>有多个AccountID

查询有效,但产生了一些重复。

进一步的警告是:

  1. 每个AddressClientIDs
  2. 有多个trans
  3. 对于AccountID
  4. ,可以同时记录AccountIDY

    我只想返回N,其中包含除了指定状态以外的状态的事务,因此我没有使用,因为我不想要2状态。

    我想只找到AccountID列的唯一值。

    如果有人可以帮助改进下面的查询,我们将非常感激。

    AccountIDs

    感谢。

2 个答案:

答案 0 :(得分:0)

SELECT AFS_Account.AddressClientID
    ,afs_transunit.AccountID
    ,SUM(afs_transunit.Units)
FROM AFS_TransUnit
INNER JOIN AFS_Account ON AFS_TransUnit.AccountID = AFS_Account.AccountID
INNER JOIN afs_trans ON afs_trans.acccountid = afs_transunit.accountid
WHERE afs_trans.STATUS NOT IN ('POSTPEND','POSTWAIT')
    -- AND afs_trans.isallocated = 'Y'
GROUP BY afs_transunit.AccountID
    ,AFS_Account.AddressClientID
HAVING SUM(afs_transunit.Units) > 100
and max(afs_trans.isallocated) = 'Y' 
and min(afs_trans.isallocated) = 'Y'

使用ANSI SQL连接语法修改了您的查询。当您加入表格时,您只需指定条件而不使用您拥有的子查询。

答案 1 :(得分:0)

由于您确认AccountID列上的两个表格之间存在一对多关系,因此您可以使用Max的{​​{1}}值来获取不同的值:

AccountID