在 SQL 中查找不同年份的重复值
Find duplicate values with different year in SQL
如何在 table 中搜索不同年份的重复记录。
我的示例数据:
Cus_No Item_No Ord_Dt Orders
1 A 2016 1
1 A 2017 2
1 B 2016 1
2 B 2015 1
2 B 2018 1
需要输出
Cus_No Item_No Ord_Dt Orders
1 A 2016 1
1 A 2017 2
2 B 2015 1
2 B 2018 1
我正在尝试收集具有相同 Cus_No、相同 Item_No 的所有记录,这些记录在订单中具有任何值并且存在于 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'))
下面的查询 returns 重复 -
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)
暗中刺杀:
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;
假设你想找出跨越一年以上的客户物品对应的记录,我们可以尝试以下方法:
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
如何在 table 中搜索不同年份的重复记录。
我的示例数据:
Cus_No Item_No Ord_Dt Orders 1 A 2016 1 1 A 2017 2 1 B 2016 1 2 B 2015 1 2 B 2018 1需要输出
Cus_No Item_No Ord_Dt Orders 1 A 2016 1 1 A 2017 2 2 B 2015 1 2 B 2018 1我正在尝试收集具有相同 Cus_No、相同 Item_No 的所有记录,这些记录在订单中具有任何值并且存在于 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'))
下面的查询 returns 重复 -
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)
暗中刺杀:
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;
假设你想找出跨越一年以上的客户物品对应的记录,我们可以尝试以下方法:
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