2014-03-04 105 views
0

我有以下表,並希望將通過SQL服務器GROUP BY只顯示第一個匹配

[name]    [phone] 
doniking   081222222222 
doni    081222222222 
Bambang Gentholet 081111111111 
Bambang   081111111111 

我想要得到這樣的結果:

[name]    [phone] 
doniking   081222222222 
Bambang Gentholet 081111111111 

回答

1

試試這個

SELECT [name],[phone] 
FROM (
     SELECT *,Row_Number() Over (Partition By phone Order By (Select Null)) AS RN 
     FROM Table1 
    ) AS T 
Where RN = 1 
OFFSET n ROWS 

您可以用您的自定義值替換n ...

Row_Number

+0

如果我增加一列型日期,如何讓基於最新日期的名字嗎? –

+0

你可以使用Max函數... –

+0

如何將OFFSET應用於該查詢? –

2

試試這個

SELECT MAX(name), phone FROM <TableName> group by phone 

編輯:膠印

SELECT MAX(name), phone FROM <TableName> group by phone 
order by phone offset 10 rows 
FETCH NEXT 5 ROWS ONLY; 

Check this進一步的細節。

+0

如何應用OFFSET到那個查詢? –

2

試試這個

SELECT name, 
    phone 
FROM (SELECT *, 
      Row_number() 
      OVER( 
       partition BY phone 
       ORDER BY name) row_num -- or you can have order by (select null) 
    FROM table1) t 
WHERE row_num = 1 
+0

如何將OFFSET應用於該查詢? –

+0

你的意思是申請OFFSET是什麼意思?你能詳細說明你在找什麼嗎? –

+0

我打算分頁需要LIMIT和OFFSET的結果。不幸的是我的SQL2005不支持OFFSET關鍵字。 –