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