मैं आदेश की एक तालिका मैं जानता हूँ कि डुप्लिकेटढूँढना डुप्लिकेट आदेश (समय निकटता से)
customer order_number order_date
---------- ------------ -------------------
1 1 2012-03-01 01:58:00
1 2 2012-03-01 02:01:00
1 3 2012-03-01 02:03:00
2 4 2012-03-01 02:15:00
3 5 2012-03-01 02:18:00
3 6 2012-03-01 04:30:00
4 7 2012-03-01 04:35:00
5 8 2012-03-01 04:38:00
6 9 2012-03-01 04:58:00
6 10 2012-03-01 04:59:00
मैं (eachother के 60 मिनट के भीतर आदेश में एक ही ग्राहक से) सभी डुप्लीकेट ढूंढना चाहते है की है। या तो एक परिणाम जिसमें 'डुप्लिकेट' पंक्तियां या सभी ग्राहकों का एक सेट शामिल है, जो कितने डुप्लिकेट की गणना करते हैं।
यहाँ मैं
SELECT
customer,
count(*)
FROM
orders
GROUP BY
customer,
DATEPART(HOUR, order_date)
HAVING (count(*) > 1)
यह वही है की कोशिश की है काम नहीं करता है जब डुप्लिकेट एक दूसरे के 60 मिनट के भीतर हैं, लेकिन 1:58 और 2:02
मैं यानी अलग घंटों में हो रहा है यह भी कोशिश की किया है इस
SELECT
o1.customer,
o1.order_number,
o2.order_number,
DATEDIFF(MINUTE,o1.order_date, o2.order_date) AS [diff]
FROM
orders o1 LEFT OUTER JOIN
orders o2 ON o1.customer = o2.customer AND o1.order_number <> o2.order_number
WHERE
ABS(DATEDIFF(MINUTE,o1.order_date, o2.order_date)) < 60
अब यह मेरे सभी प्रतिलिपियों देता है, लेकिन यह भी मुझे डुप्लिकेट आदेश के अनुसार कई पंक्तियों देता है। i.e (o1, o2) और (o2, o1) जो एकाधिक डुप्लीकेट वाले कुछ ऑर्डर नहीं होने पर इतना बुरा नहीं होगा। उन मामलों में मुझे (ओ 1, ओ 2), (ओ 1, ओ 3), (ओ 2, ओ 1), (ओ 2, ओ 3), (ओ 3, ओ 1), (ओ 3, ओ 2) आदि मिलते हैं। मुझे सभी क्रमिकरण मिलते हैं।
किसी के पास कुछ अंतर्दृष्टि है? मैं जरूरी नहीं कि यहां सबसे अच्छा प्रदर्शन करने वाला उत्तर ढूंढ रहा हूं, केवल एक जो काम करता है।
आपके पास एक कैस्केड निर्भरता है। यदि आपके पास आदेश हैं ('0, 59, 118, 177, 236, आदि) * [सभी 59 मिनट एपर्ट] *, आप अपनी खोज का नतीजा क्या चाहते हैं? – MatBailie
@Dems दिलचस्प है। मैं उन सभी डुप्लीकेटों पर विचार करूंगा। हालांकि मैं किसी भी मामले में परिणाम से खुश हूं। –