0
进行分组下表包含Key和StartTime和EndTime。我希望我的查询返回,我的密钥,具有此密钥的记录数以及具有相同密钥的所有记录的总分钟数。不幸的是,我不能在组中使用StartTime和EndTime,因为这会将每行的开始或停止时间分组。按要求分组,甚至认为我不想按
SELECT sn.Key,
COUNT(*) as SessonNoteCount,
sum(dbo.fnCalcTime(sn.StartTime, sn.EndTime)) as min
FROM SessionNote sn
group by sn.Key, sn.StartTime, sn.EndTime
order by sn.Key
为什么你不能在没有'sn.StartTime'和'sn.EndTime'的情况下运行'GROU P BY'条款?在我看来,你可以。然而,就你所知,在那里你可能会得到令人难以置信的糟糕表现。如果你想使用一个函数抽象你的时间计算并获得合理的性能,它需要是一个'RETURNS TABLE'函数,它有一个'SELECT'语句,创建'WITH SCHEMABINDING'并且像'Sum((SELECT已经从dbo.fnCalcTime(sn.STartTime,sn.EndTime)))''。这将允许解析器内联函数体。 – ErikE 2014-09-02 22:51:44