【问题标题】:Removing Duplicates With Exception删除带有异常的重复项
【发布时间】:2016-06-01 14:25:48
【问题描述】:

在下图中,您会注意到有多个 DetailID 相同的实例,但 EES_Base_Commission 为 0 或 0.2。

当 DetailID 相同且 EES_Base_Commission 大于 0 时,过滤掉我的结果集案例。

我尝试了一些重复删除选项,例如 GROUP BY // HAVING,但没有找到在我的努力中正确利用计数的方法。

Duplicate Results

(临时表很大,不做链接)

SELECT Trade_Date, ContractNum, DetailID, EES_Base_Commission

FROM #Sales

SELECT Trade_Date, ContractNum, DetailID, COUNT(*) Duplicates

FROM #Sales

GROUP BY Trade_Date, ContractNum, DetailID

HAVING COUNT (*) > 1

ORDER BY DetailID

【问题讨论】:

  • 请出示您的代码。

标签: sql sql-server database sql-server-2008 duplicates


【解决方案1】:

听起来您正在寻找不同 DetailID 的列表,并且想要过滤掉佣金高于 0 的任何记录。您可以使用 DISTINCT 和 WHERE 来完成此操作。

SELECT DISTINCT 
Trade_Date
, ContractNum
, DetailID
, EES_Base_Commission

FROM #Sales

WHERE EES_Base_Commission = 0

【讨论】:

  • 这通过一个小改动解决了我的问题!我实际上需要 - 在这种情况下 - 基本佣金 > 0 而不是 = 0。结构虽然有效,但非常感谢朋友!
【解决方案2】:
SELECT * 
FROM table
WHERE EES_Base_Commission > 0
AND DetailID IN
(SELECT DetailID FROM table GROUP BY DetailID HAVING COUNT(*) > 1)

【讨论】:

  • 这给了我一个空白的结果集。
  • 对不起,我完全错误地使用了 DISTiNCT 关键字,给我一些时间,我会编辑我的答案。
  • 我已经编辑了我的答案,请查看并告诉我
猜你喜欢
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 2016-11-18
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多