2014-02-19 3 views
0

Так у меня есть заявление SQL, который возвращает что-то вроде этого:Выбор первого матч объединения

PLAYER_ID | PLAYER_NAME | POSITION | 
1   player1  hitter 
1   player1  short stop 
1   player1  pitcher 
2   player2  pitcher 
2   player2  catcher 

Это делается с помощью внутреннего соединения между игроками и current_player_stats.

SELECT P.PLAYER_ID, P.PLAYER_NAME, S.POSITION 
FROM PLAYERS AS P 
INNER JOIN CURRENT_PLAYER_STATS AS S 
ON P.PLAYER_ID = S.PLAYER_ID 
WHERE P.PLAYER_ID = <some player id> 

Что SQL я могу использовать, чтобы отфильтровать набор результатов, чтобы дать мне:

PLAYER_ID | PLAYER_NAME | POSITION | 
1   player1  hitter 
2   player2  pitcher 

т.е. верхний ряд каждого игрока.

+0

если вы показать SQL вы используете, вы можете получить некоторые отзывы. – BWS

+0

Что означает «верхний ряд»? (например, самый последний, самый большой/самый маленький идентификатор) – GolfWolf

+0

Как определить, какая строка является верхней строкой для каждого игрока? – Popo

ответ

2

С ограниченной информации, предоставленной возможностью попробовать

;WITH Vals AS (
    SELECT Player_ID, 
       Player_Name, 
       Position, 
       ROW_NUMBER() OVER(PARTITION BY Player_ID ORDER BY [Columns Here]) as RowID 
    FROM YourTable 
) 
SELECT * 
FROM Vals 
WHERE RowID = 1 
+0

По существу, что вы делаете, присваивая каждой строке номер строки, а затем выбирая только строки с числом 1? – MGZero

+0

Да, это правильно. Обратите внимание на раздел «by by» и «order by», так как это определит, когда номер строки будет сброшен, и в каком порядке –

+0

Отлично, спасибо! – MGZero

 Смежные вопросы

  • Нет связанных вопросов^_^