2011-07-20 37 views
1

我在dbo.Members中有两行,但是我的存储过程未返回计数。我可以像SELECT COUNT(*) FROM dbo.Members WHERE MemberID = 1234一样运行查询,并将计数返回为2,这是正确的。存储过程中未返回的行

为什么它不会返回存储过程中的行?

SELECT 
    ValidCount, 
    InvalidCount, 
    (SELECT COUNT(*) FROM dbo.Members WHERE MemberID = @pMemberID) AS 'TotalMembers' 

FROM 
    dbo.Reporting 
WHERE 
    MemberID = @pMemberID 

回答

4

可能是因为你没有在Reporting项与MemberId = 1234

试试这个:

SELECT COALESCE(validCount, 0) AS validCount, 
     COALESCE(invalidCount, 0) AS invalidCount, 
     (
     SELECT COUNT(*) 
     FROM members m 
     WHERE m.memberId = p.memberId 
     ) AS totalMembers 
FROM (
     SELECT @pMemberId AS memberId 
     ) p 
LEFT JOIN 
     reporting r 
ON  r.memberId = p.memberId 
+0

这是正确的。我该如何解决这个问题? –

+0

@Trey:解决什么问题? – Quassnoi

+1

我认为Quassnoi刚刚向你展示了 – n8wrl