2016-03-05 136 views
1

我有我的表如下。其实玩家团队1和2枢轴表查询

teamNO playername 
=================== 
1  Joe 
1  Jack 
1  Micheal 
1  Ken 
1  Fendy 
2  Helen 
2  Mike 
2  Chris 
2  George 
2  Dan 

我想写我的表像下一个,但我只得到1行排名由他们的总积分。我认为由于teamno只有1和2.有什么办法可以实现这个目标吗?在此先感谢

Rank Team1   Team2 
================================ 
1  Joe   Helen 
2  Jack   Mike 
3  Micheal  Chris 
4  Ken   George 
5  Fendy   Dan 
+1

既然这样,没有你不能。没有明确的排名或指示排名基础加入的点数。是否有任何其他基础表来源用于确定排名? – DRapp

回答

0
;WITH cte AS(
    SELECT * FROM (VALUES 
    (1, 'Joe'), 
    (1, 'Jack'), 
    (1, 'Micheal'), 
    (1, 'Ken'), 
    (1, 'Fendy'), 
    (2, 'Helen'), 
    (2, 'Mike '), 
    (2, 'Chris'), 
    (2, 'George'), 
    (2, 'Dan') 
    ) as t(teamNO, playername)), 
    final AS (
    SELECT ROW_NUMBER() OVER (PARTITION BY TeamNo ORDER BY TeamNo) AS [Rank],* 
    FROM cte) 

SELECT f1.[Rank], f1.playername as Team1, f2.playername as Team2 
FROM final f1 
LEFT JOIN final f2 ON f1.[Rank] = f2.[Rank] and f1.TeamNo != f2.TeamNo 
WHERE f1.teamNO = 1 

结果:

Rank     Team1 Team2 
-------------------- ------- ------- 
1     Joe  Helen 
2     Jack Mike 
3     Micheal Chris 
4     Ken  George 
5     Fendy Dan 

(5 row(s) affected)