SQL查詢連續年份


有這樣一個問題,給出一個表格記錄了奪冠球隊的名稱和年份,我們要做的就是寫出一條SQL語句,查詢再次期間連續奪冠的有哪些,起止時間是什么

下邊是代碼

create table #t(TEAM vaarchar(20), Y int)
insert #t(TEAM,Y) VALUES
('活塞',1990),
('公牛',1991),
('公牛',1992),
('公牛',1993),
('火箭',1994),
('火箭',1995),
('公牛',1996),
('公牛',1997),
('公牛',1998),
('馬刺',1999),
('湖人',2000),
('湖人',2001),
('湖人',2002),
('馬刺',2003),
('活塞',2004),
('馬刺',2005),
('熱火',2006),
('馬刺',2007),
('凱爾特人',2008),
('湖人',2009),
('湖人',2010);


SELECT RN=IDENTITY(INT),* INTO #a FROM #t ORDER BY TEAM,Y
SELECT a.TEAM,
MIN(a.Y) B,
MAX(a.Y) E,
FROM #a a
WHERE EXISTS(
SELECT 1 FROM #a
WHERE TEAM=a.TEAM
AND (Y=a.Y-1 OR a.Y=Y-1)
)
GROUP BY a.TEAM,Y-RN

DROP TABLE #t,#a

那現在做些解釋

 1、給這些數據添加一列自增長的RN列並插入到新的臨時表#a並且對TEAM和Y排序

 2、將#a進行自匹配,匹配的條件是TEAM名稱形同(TEAM=a.TEAM),並且年份Y與前后的年份進行匹配(Y=a.Y-1 OR a.Y=Y-1)

 3、最關鍵的就是這個匹配的規則,在球隊名相同的前提下,年份連續才滿足條件

 4、在最后不僅對球隊TEAM進行了分組,還對Y-RN進行分組,如果年份有間隔,那么Y-RN就不是同一個值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM