我有两个表,联系人,帐户。我正在尝试创建一个通用函数,它将获得与同一父项关联的记录数,这就是我所拥有的:
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
有更好的方法吗?
答案 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
,将结果缩减为您需要的一行...