2015-07-10 104 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

第二张表中的第一张表“Sno”的'key_id'? –

回答

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