从 SQL 中的值列表中获取第一个值

Getting the first value from a list of values in SQL

我有以下table

ID  Name    Activity date   total time

1   AB       1/10/2015        209

1   AB       1/11/2015       1234

1   AB       1/12/2015        10

2   CD       1/10/2015       2347

2   CD       1/11/2015         0

2   CD       1/12/2015         0

2   CD       1/13/2015         5

3   EF       1/10/2015        53

3   EF       1/11/2015        14

4   XY       1/11/2015        76

我需要下面的结果

ID  Name    Activity date   total time

1   AB       1/10/2015        209

2   CD       1/10/2015        2347

3   EF       1/10/2015        53

4   XY       1/11/2015        76

基本上,我需要所有名称的第一个值,我使用了以下查询,但它为名称值提供了空白

SELECT distinct(Id),
FIRST_VALUE(Name) OVER (ORDER BY Id Asc) AS Name,
FIRST_VALUE(ActivityDate) OVER (ORDER BY Id Asc) AS Date,
FIRST_VALUE(TimeInQueue) OVER (ORDER BY Id Asc) AS Totaltime
FROM Historytable
GROUP BY Id,ActivityDate,Name

使用Window function

SELECT ID,
       NAME,
       [Activity date],
       total time
FROM   (SELECT Row_number() OVER(partition BY Id ORDER BY [Activity date]) Rn,
               ID,
               NAME,
               [Activity date],
               [total  time] from yourtable) A
WHERE  rn = 1 

或根据 id 查找 min [Activity date] 日期,并使用 Id[Activity date]

将结果加入 table
SELECT a.ID,
       a.NAME,
       a.[Activity date],
       a.[total time]
FROM   yourtable A
       JOIN (SELECT Min([Activity date]) [Activity date],
                    ID
             FROM   yourtable) B
         ON a.id = b.id
            AND a.[Activity date] = b.[Activity date]