[英]Creating a function out of a select statement in SQL
我建立了一條select語句來選擇參與者首次記錄在數據庫中的日期。 但是我想從此select語句中創建一個函數以使用它。 我對SQL相當陌生,以前從未構建過函數。 我的選擇語句如下所示:
Select DATEDIFF(day, (select min(startdatetime)
from GamePlay
), enddatetime)
from GamePlay
where ParticipantID = '200'
我嘗試的函數如下所示:
CREATE FUNCTION daysPlayed (@ParticipantID int)
RETURNS DateTime
AS
BEGIN
Return DATEDIFF(day, (select min(startdatetime)
from GamePlay
), enddatetime)
from GamePlay
where ParticipantID = @ParticipantID
END
GO
DATEDIFF不返回日期時間。 它返回一個整數。
您的函數可能如下所示:
CREATE FUNCTION daysPlayed (@ParticipantID int)
RETURNS INT
AS
BEGIN
DECLARE @result INT
SELECT @result=DATEDIFF(day, (select min(startdatetime) from GamePlay), enddatetime) from GamePlay where ParticipantID = @ParticipantID
RETURN @result
END
但是我不認為它會做您想做的事。 另外,請注意,在大量行的選擇中使用函數將保證性能,並且您可能無法使用在表中設置的某些索引。
我不確定您到底想要什么,但看到此示例可能會有所幫助
CREATE FUNCTION mDay (@Date nchar(10))
RETURNS nchar(2)
AS
BEGIN
RETURN substring(@Date,9,2)
END
SELECT dbo.Courses.MID, dbo.Masters.ID, dbo.Masters.Name,COUNT(CASE dbo.mDay(CDate) WHEN '01' THEN 2 END) AS day1
FROM dbo.Courses INNER JOIN
dbo.Masters ON dbo.Courses.MID = dbo.Masters.MCode
WHERE (dbo.Courses.CLevel = @Kind) AND (dbo.Courses.CDate BETWEEN @Date1 AND @Date2)
GROUP BY dbo.Courses.MID, dbo.Masters.Name, dbo.Masters.Family, dbo.Masters.ID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.