2012-05-25 54 views
2

有這樣一些數據:我可以使用純SQL做這種連接操作嗎?

name       number 

12_PAGE19901_CHN.DISPLAY_NT  n.115 
12_PAGE19901_CHN.DISPLAY_NT  n.114 
KAITEST123.DISPLAY_NT   n.110 
KAITEST123.DISPLAY_NT   n.109 
KAITEST123.DISPLAY_NT   n.108 
KAITEST123.DISPLAY_NT   n.107 
KAITEST33333.DISPLAY_NT   n.105 

我想找回一些數據是這樣的:

name       number 

12_PAGE19901_CHN.DISPLAY_NT  n.115 
KAITEST123.DISPLAY_NT   n.110 
KAITEST33333.DISPLAY_NT   n.105 

我需要數量的first價值爲每個特定的名稱,這可能嗎?

回答

8

看來,您只需要爲每個特定的name最大值number

SELECT 
    name, 
    MAX(number) AS number 
FROM 
    yourTable 
GROUP BY 
    name 

請注意,因爲number是字母數字字段; n.09n.011高。爲了使這更多數字一致,您需要n.009,而不是n.09

(由於我不知道你的電話號碼字段的行爲,這只是一個一般的注意,不是你的示例數據。)

1

如果你想爲number最大和GROUP BY name,嘗試這個。

select name, max(number) as number 
from TABLE 
group by name 
0
SELECT name, 
     'n.' + Cast(Max(Cast(Substring([number], 3, Len([number]) - 2) AS INT)) 
        AS 
        VARCHAR(10)) 
FROM table 
GROUP BY name 
+1

很好的回答提供了有關'number'列的行爲* *幾個假設。如果沒有來自OP的完整和明確的描述,哪些值在這個領域是不可能的,這種類型的操作可能很容易因給出「意外」值而失敗。 – MatBailie

相關問題