一个表有订单号、客户编号、产品编号、件数、下单日期,订单号不重复,一张订单可以有多个产品,有时候业务员对同个客户下两张一样的单子,即订单重复,怎么把重复的订单筛选出来啊?数据表如下:其中**001与**003即为重复订单,如何通过查询找出来呢? 订单号 客户编号 产品编号 件数 下单日期
**001 240021 1101 10 2007-10-25
**001 240021 2101 20 2007-10-25
**001 240021 3512 5 2007-10-25 **002 240522 1101 10 2007-10-25
**002 240522 2111 5 2007-10-25 **003 240021 1101 10 2007-10-25
**003 240021 2101 20 2007-10-25
**003 240021 3512 5 2007-10-25 **004 240212 1101 10 2007-10-25 **005 240021 2101 10 2007-10-25 **006 250021 1101 10 2007-10-25
**006 250021 2101 20 2007-10-25
**006 250021 3512 5 2007-10-25
**001 240021 1101 10 2007-10-25
**001 240021 2101 20 2007-10-25
**001 240021 3512 5 2007-10-25 **002 240522 1101 10 2007-10-25
**002 240522 2111 5 2007-10-25 **003 240021 1101 10 2007-10-25
**003 240021 2101 20 2007-10-25
**003 240021 3512 5 2007-10-25 **004 240212 1101 10 2007-10-25 **005 240021 2101 10 2007-10-25 **006 250021 1101 10 2007-10-25
**006 250021 2101 20 2007-10-25
**006 250021 3512 5 2007-10-25
from tablename as a join tablename as b
on a.客户编号 = b.客户编号 and
a.产品编号 = b.产品编号 and
a.件数 = a.件数 and
a.下单日期 = b.下单日期
SELECT 订单表.客户编号, 订单表.产品编号, 订单表.件数, 订单表.订单号
FROM 订单表
WHERE (((订单表.客户编号) In (SELECT [客户编号] FROM [订单表] As Tmp GROUP BY [客户编号],[产品编号],[件数] HAVING Count(*)>1 And [产品编号] = [订单表].[产品编号] And [件数] = [订单表].[件数])))
ORDER BY 订单表.订单号;运行结果如下:
订单号 客户编号 产品编号 件数 下单日期
**001 240021 1101 10 2007-10-25
**001 240021 2101 20 2007-10-25
**001 240021 3512 5 2007-10-25 **003 240021 1101 10 2007-10-25
**003 240021 2101 20 2007-10-25
**003 240021 3512 5 2007-10-25**004 240212 1101 10 2007-10-25 多了**004这张订单出来,这张订单只有一种产品,客户也和前面不一样,明显不是重复订单,应该怎样修改这个查询语句呢?
(
select 1 from tb where 订单号!a.订单号 and checksum(客户编号,产品编号,件数,日期)=checksum(a.客户编号,a.产品编号,a.件数,a.日期))
)