0

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

我的样本数据:

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 乙 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'))
4

3 回答 3

0

下面的查询返回重复项 -

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)
于 2018-02-28T03:36:01.873 回答
0

暗中刺伤:

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;
于 2018-02-28T03:41:41.857 回答
0

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

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
于 2018-02-28T03:42:56.357 回答