का उपयोग कर निरंतर श्रेणियों को कैसे समूहित करें मेरे पास एक सारणी है जिसमें श्रेणियां, तिथियां और दरें शामिल हैं। प्रत्येक श्रेणी में अलग-अलग तिथियों के लिए अलग-अलग दरें हो सकती हैं, एक श्रेणी में किसी दिए गए दिनांक पर केवल एक दर हो सकती है।MySQL
Id CatId Date Rate
------ ------ ------------ ---------
000001 12 2009-07-07 1
000002 12 2009-07-08 1
000003 12 2009-07-09 1
000004 12 2009-07-10 2
000005 12 2009-07-15 1
000006 12 2009-07-16 1
000007 13 2009-07-08 1
000008 13 2009-07-09 1
000009 14 2009-07-07 2
000010 14 2009-07-08 1
000010 14 2009-07-10 1
अनोखा सूचकांक (CatID, तिथि, दर) मैं समूह के सभी निरंतर दिनांकों श्रेणियों के लिए प्रत्येक श्रेणी के लिए पसंद है और रख केवल शुरू करते हैं और सीमा की समाप्ति होगी। पिछले उदाहरण के लिए, हम होगा:
CatId Begin End Rate
------ ------------ ------------ ---------
12 2009-07-07 2009-07-09 1
12 2009-07-10 2009-07-10 2
12 2009-07-15 2009-07-16 1
13 2009-07-08 2009-07-09 1
14 2009-07-07 2009-07-07 2
14 2009-07-08 2009-07-08 1
14 2009-07-10 2009-07-10 1
मैं the forum में एक ऐसी ही समाधान है जो वास्तव में परिणाम
WITH q AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY CatId, Rate ORDER BY [Date]) AS rnd,
ROW_NUMBER() OVER (PARTITION BY CatId ORDER BY [Date]) AS rn
FROM my_table
)
SELECT CatId AS catidd, MIN([Date]) as beginn, MAX([Date])as endd, Rate
FROM q
GROUP BY CatId, rnd - rn, Rate
SQL FIDDLE SEE मैं mysql में एक ही बात कर सकते हैं कैसे नहीं दिया पाया ? कृपया मदद करें!
क्यों '(CatID, दर) = के लिए अपने उदाहरण शो करता है (14,1) 'अंतर्निहित तालिका में' 200 9-07-09 'नहीं होने पर '200 9-07-08' से' 200 9 -10-10-10 'तक की परिणामी सीमा? सी.एफ़ '(CatId, दर) = (12,1)', जो इसकी असंतोष के कारण दो परिणामी श्रेणियों का उत्पादन करता है। – eggyal
धन्यवाद eggyal, अब यह – Fouzi