我在使用SQL中的group by子句時遇到了一些問題。我有以下基本功能:SQL UDF組按參數問題
CREATE FUNCTION dbo.fn_GetWinsYear (@Year int)
RETURNS int
AS
BEGIN
declare @W int
select @W = count(1)
from tblGames
where WinLossForfeit = 'W' and datepart(yyyy,Date) = @Year
return @W
END
我試圖運行下面的基本查詢:
select dbo.fn_GetWinsYear(datepart(yyyy,date))
from tblGames
group by datepart(yyyy,date)
不過,我遇到了以下錯誤消息:列「tblGames.Date」在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。
任何想法爲什麼會發生這種情況?僅供參考,我知道我可以刪除該功能並將其合併爲一個調用,但如果可能的話,我想保留該功能。
我不建議採取這種做法。你在基於SET的世界中正在考慮OOP。績效不可能很好地擴展。 – 2010-04-26 22:11:31
是的,我知道這並不理想,但我只是想弄明白爲什麼會發生。 – 2010-04-26 22:19:29
我沒有看到你的功能有任何問題。 – Germ 2010-04-26 22:27:44