2013-05-27 99 views
2

两列,第一列是分开的,第二列没有那么多。从不完全不同的结果中返回不同的行

Col1 ---- Col2 
1 ---- abc 
1 ---- abc (123) 
2 ---- def 
2 ---- def (324) 

我需要带回重复的记录,但只带有较长col2的的人。

我试过使用CONTAINS函数,但我的表没有全文索引。

回答

2

一种选择是由col2的的LEN()使用使用ROW_NUMBER()排序:

SELECT * 
FROM (
    SELECT Col1, Col2, ROW_NUMBER() OVER (PARTITION BY Col1 ORDER BY LEN(Col2) DESC) rn 
    FROM YourTable 
) t 
WHERE rn = 1 
0
 


SELECT col1 , 
     col2 
FROM (SELECT col1 , 
        col2 , 
        Rank() OVER (PARTITION BY col1 ORDER BY col2 DESC) row 
      FROM  dbo.table 
     ) t 
WHERE row = 1 



您也可以尝试这个..