【问题标题】:Find duplicate values with different year in SQL在 SQL 中查找具有不同年份的重复值
【发布时间】:2018-02-28 11:42:56
【问题描述】:

如何在表中搜索重复但年份不同的记录。

我的样本数据:

Cus_No Item_No Ord_Dt 订单 1 个 2016 年 1 1 一个 2017 年 2 1 B 2016 1 2 乙 2015 1 2 乙 2018 1 需要输出
Cus_No Item_No Ord_Dt 订单
1 个 2016 年 1
1 一个 2017 年 2
2 乙 2015 1
2 B 2018 1 
我正在尝试收集具有相同 Cus_No 的所有记录,相同的 Item_No 在 Orders 中具有任何值并且在 Ord_dt 中的任何年份都存在。原因是,我需要找到那些具有相同客户编号且所有年份都有订单的商品。 我正在使用 MS Query,这是我尝试过的 SQL 语句,但仍显示所有记录。
SELECT `'table'`.Cus_No, `'table'`.Item_No, `'table'`.Ord_Dt, `'table'`.Orders
FROM `'table'`
WHERE (`'table'`.Orders>=1) AND (`'table'`.Ord_Dt In ('2016','2017'))

【问题讨论】:

  • 请在您的问题中直接包含示例数据,不要作为图片链接。并向我们​​展示预期的输出。
  • 我如何搜索重复记录...当你搜索它们时你想对它们做什么?
  • 您提供的 SQL 与 SQL Server 不兼容(SQL Server 不使用反引号)。而 MS Query 是一个真正古老的 SQL 编辑器程序。
  • @TimBiegeleisen 编辑了我的帖子。谢谢
  • 为什么2016年的B记录消失了?

标签: sql microsoft-query


【解决方案1】:

假设您要识别与出现超过一年的客户项目对应的记录,我们可以尝试以下操作:

SELECT t1.*
FROM yourTable t1
INNER JOIN
(
    SELECT Cus_No, Item_No
    FROM yourTable
    GROUP BY Cus_No, Item_No
    HAVING COUNT(DISTINCT Ord_Dt) > 1
) t2
    ON t1.Cus_No  = t2.Cus_No AND
       t1.Item_No = t2.Item_No

【讨论】:

  • 我还有一个问题。我尝试用 MS Query 语句中的实际表名Table$ 替换 yourTable 但返回错误,SQL Query 无法以图形方式表示。我还尝试查看此链接是否有帮助 link
  • 我不知道你的数据库。确实,这里给出的大多数答案都应该让你接近,至少在 ANSI SQL 中。
  • 最后一个问题。您从该语句中给出的内部连接有什么区别? 'code' SELECT Table$.Cus_No, Table$.Item_No FROM Table$ Table$ GROUP BY Table$.Cus_No, Table$.Item_No HAVING (Count(*)>1)
  • 这可能没问题,如果您确定给定年份每个项目和客户只出现一次。
  • 非常感谢蒂姆。我现在明白了。将运行它 MS Query。
【解决方案2】:

以下查询返回重复项-

select * from test where (cus_no, item_no) in (
select Cus_No, item_no from test group by Cus_No, item_no having count(*) > 1)

【讨论】:

    【解决方案3】:

    在黑暗中刺伤:

    with agg as (
        select cust_no, item_no from T
        group by cust_no, item_no
        where ord_dt in (...)
        having count(*) = <num years in list>
    )    
    select *
    from T t inner join agg a
        on  a.cust_no = t.cust_no
            and a.item_no = t.item_no;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2015-05-11
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多