Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 创建函数以统计用户在数据库中的提交_Sql Server_Database_Function - Fatal编程技术网

Sql server 创建函数以统计用户在数据库中的提交

Sql server 创建函数以统计用户在数据库中的提交,sql-server,database,function,Sql Server,Database,Function,我有一个包含用户的数据库和一个包含提交的用户的数据库。我做了一个选择,返回每个用户的提交计数,但我需要帮助将其转换为函数。 我所做的选择是: SELECT u.Username, COUNT(*) AS 'Count' FROM Users AS u JOIN Commits AS c ON C.ContributorId = u.Id GROUP BY u.Username 我收到 ------------------------------ ----------- ANinedsa

我有一个包含用户的数据库和一个包含提交的用户的数据库。我做了一个选择,返回每个用户的提交计数,但我需要帮助将其转换为函数。 我所做的选择是:

SELECT u.Username, COUNT(*) AS 'Count'
FROM Users AS u
JOIN Commits AS c ON C.ContributorId = u.Id
GROUP BY u.Username
我收到

------------------------------ -----------
ANinedsa                       2
AryaDenotehow                  3
AryaNinehow                    3
BlaAntigadsa                   3
BlaSinduxrein                  2
DarkImmagidsa                  1
HighAsmahow                    3
RoundAntigaBel                 5
RoundArmydsa                   2
RoundInspecindi                2
ScoreAntigarein                4
ScoreImmagidefon               4
ScoreSinduxIana                1
TheDivineBel                   2
UnderSinduxrein                6
UnveiledDenoteIana             1
WhatTerrorBel                  3
ZendArmyhow                    3
我的问题是如何生成返回计数的函数。 例如:

SELECT dbo.udf_AllUserCommits('UnderSinduxrein')
输出

6

您可以使用以下代码:

CREATE FUNCTION dbo.udf_AllUserCommits
(
    -- Add the parameters for the function here    
    @username NVARCHAR(100)
)
RETURNS INT
AS
BEGIN
   -- Declare the return variable here
   DECLARE @cnt INT

   -- Get number of commits for specified user
   SET @cnt = (SELECT COUNT(*) 
               FROM Users AS u
               JOIN Commits AS c ON C.ContributorId = u.Id
               WHERE Username = @username)

   -- Return the result of the function
   RETURN (@cnt);
END

在这里提出问题之前,你应该先阅读。如果有可能将此函数嵌入到另一个查询中,请使用内联表值函数以获得更好的性能。当您可以直接返回查询结果时,声明局部变量并没有真正的好处。@DaleK是的,我同意,我只是想让代码更容易理解。