SQL Server同级记录计数

时间:2016-08-02 15:53:12

标签: sql sql-server

我有两个表,联系人,帐户。我正在尝试创建一个通用函数,它将获得与同一父项关联的记录数,这就是我所拥有的:

CREATE FUNCTION [dbo].[SiblingCount](
@IDValue Integer
)
RETURNS Integer AS 
BEGIN
      DECLARE @Result integer

      Select @Result = Count(a.AccountID)
      from Account a
      where a.Status <> 'Active' and
      a.ContactID = (select a2.ContactID 
      from Account a2 where a2.Accounnts = @IDValue)

      RETURN @Result
END

GO

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

你真的在谈论兄弟姐妹吗?在您的查询中,您甚至不会触摸表Contacts ...我认为,您在Concats和Accounts之间有1:n关系,而您真正需要的是孩子 ...

我认为这样做可以更容易:

SELECT c.ContactID,COUNT(*) AS CountAccounts
FROM Contacts AS c
INNER JOIN Accounts AS a ON c.ContactID=a.ContactID
WHERE a.Status<>'Active'
GROUP BY c.ContactID

AND c.ContactID=@IDValue添加WHERE,将结果缩减为您需要的一行...