Tsql 如何在NVARCHAR类型的列上使用聚合函数获取列中的第一个可用值(而不是MIN)?

Tsql 如何在NVARCHAR类型的列上使用聚合函数获取列中的第一个可用值(而不是MIN)?,tsql,sql-server-2008-r2,group-by,aggregate-functions,Tsql,Sql Server 2008 R2,Group By,Aggregate Functions,我有一张临时桌(#诱人),看起来像这样: AID StartTime EndTime StartSID EndSID Name 我如何在Name上使用聚合函数,以便当我按开始时间和结束时间分组时,我在Name列中得到John Pringle(我尝试使用MIN(Name),但它给了我空值,如果我使用MAX(Name)我得到了杰夫·史密斯(Jeff Smith)) 基本上,我的要求是获取列Name 这是我的疑问: SELECT TT.AID,

我有一张临时桌(#诱人),看起来像这样:

AID         StartTime   EndTime     StartSID EndSID     Name

我如何在Name上使用聚合函数,以便当我
开始时间结束时间分组时,我在Name列中得到John Pringle(我尝试使用
MIN(Name)
,但它给了我空值,如果我使用
MAX(Name)
我得到了杰夫·史密斯(Jeff Smith)

基本上,我的要求是获取列Name

这是我的疑问:

SELECT
    TT.AID,
    MIN(StartTime) as StartTime,
    MAX(EndTime) as Endtime,
    MIN(StartSSID) as StartSID,
    MAX(EndSSID) AS EndSID,
    -- I tried MIN(Name) here but I get empty cell, MAX(Name) gives wrong result. Basically I want first available value in the Name column here (which is John Pringle).
    FROM
        #TempTable TT
    GROUP BY TT.AID, StartTime, EndTime
AID         StartTime   EndTime     StartSID EndSID     Name

79F05D45    2013-07-02  2013-07-03  1226349  1227338    
79F05D45    2013-07-03  2013-07-03  1227381  1239004
我得到的结果:

SELECT
    TT.AID,
    MIN(StartTime) as StartTime,
    MAX(EndTime) as Endtime,
    MIN(StartSSID) as StartSID,
    MAX(EndSSID) AS EndSID,
    -- I tried MIN(Name) here but I get empty cell, MAX(Name) gives wrong result. Basically I want first available value in the Name column here (which is John Pringle).
    FROM
        #TempTable TT
    GROUP BY TT.AID, StartTime, EndTime
AID         StartTime   EndTime     StartSID EndSID     Name

79F05D45    2013-07-02  2013-07-03  1226349  1227338    
79F05D45    2013-07-03  2013-07-03  1227381  1239004
我想要的结果:

AID         StartTime   EndTime     StartSID EndSID     Name

79F05D45    2013-07-02  2013-07-03  1226349  1227338        
79F05D45    2013-07-03  2013-07-03  1227381  1239004    John Pringle

谢谢

我希望没有文本列,因为标题表明我指的是字符串(NVARCHAR)类型的列。我只是用了一个通用术语“text”。那么Group By TT.AID呢?@Learner我看不出有任何理由需要它,这只是样本数据。我在数据中有多个辅助工具。抱歉搞混了。如果可能的话,我需要一组一组的解决方案。在发布问题之前,我研究了这种方法。此处:@Learner在分割子句中添加了辅助。这应该能解决问题
;WITH a as
(
SELECT
    AID,
    StartTime,
    EndTime,
    StartSSID,
    EndSSID,
    rn = row_number() over (partition by AID,cast(starttime as date) order by case WHEN name = '' or name is null then '20990101' else starttime end, starttime)
    FROM
        #TempTable TT
)
SELECT AID, StartTime, EndTime, StartSSID, EndSSID
WHERE rn = 1