2015-07-10 4 views
1

У меня есть несколько запросов в SQL Server. У меня есть две таблицыSQL Server: группировка запросов

  1. KEYWORD_TEXT

  2. Keyword_relate

Столбцы в keyword_text:

  1. KEY_ID
  2. ключевые слова

keyword_relate Колонны:

  1. KEY_ID
  2. PRODUCT_ID
  3. оценка
  4. статус

Примеры данных для keyword_text:

----|---------- 
1 | Pencil 
2 | Pen 
3 | Books 

Пример данных для keyword_relate:

---------------------------- 
Sno| Product | SCore|status 
--------------------------- 
1 | 124  | 2 | 1 
1 | 125  | 3 | 1 
2 | 124  | 3 | 1 
2 | 125  | 2 | 1  

От этого я хочу, чтобы получить product_id, сгруппированных по ключевым словам, и которые имеют максимальный балл

+2

Как выглядит ваш запрос? – Kaf

+0

Является ли 'key_id' первой таблицы' Sno' во второй таблице? –

ответ

2

key_id Предполагая, что из первой таблицы во второй таблице Sno. Вы можете использовать ROW_NUMBER:

WITH CTE AS 
(
    SELECT Product AS ProductID, Score As MaxScore, 
      RN = ROW_NUMBER() OVER (PARTITION BY kt.key_id ORDER BY Score DESC) 
    FROM keyword_text kt INNER JOIN keyword_relate kr 
    ON kt.key_id = kr.Sno 
) 
SELECT ProductID, MaxScore 
FROM CTE 
WHERE RN = 1 
Смежные вопросы