2014-11-06 72 views
-2

序列的第一次出現我有一個表看起來像這樣查找在SQL Server

NAME  DATE 
    -------------------- 
    A  2014.01.01 
    A  2014.01.02 
    B  2014.01.05 
    B  2014.01.06 
    B  2014.01.07 
    C  2014.01.08 
    C  2014.01.10 
    C  2014.01.11 
    B  2014.01.13 
    B  2014.01.15 
    B  2014.01.18 

我怎麼能提取每個「NAME」序列中第一次出現?

含義我想有以下返回:

NAME  DATE 
A  2014.01.01 
B  2014.01.05 
C  2014.01.08 
B  2014.01.13 

回答

1

基本group by和使用MIN功能應該這樣做:

SELECT NAME, MIN(DATE) FROM Table GROUP BY NAME 

SQL Server提供了number of different aggregate functions,讓您做這種事情。

+0

使用MIN(DATE)將只產生用於NAME = 'B' 一個結果。然而,我需要爲每組連續的'B'值得出結果之一。 – 2014-11-11 00:58:46

2

只需使用min()

select name, min(date) as date 
from table t 
group by name; 
+0

在這種情況下,它會產生'B'的單個結果。我正在爲NAME的每個**組**輸入第一個(或最小)結果。 – 2014-11-11 00:53:09

+0

@PhilippePinsonneault。 。 。你的問題只引用兩列。所以,第一個/最小結果由'min()'函數提供。如果你有不同的問題,那麼*問*一個新的問題。編輯這一個可能會使這裏的答案無效,這可以吸引downvotes。 – 2014-11-11 03:02:01