这可能很容易,但我不知道。 SQL server2005 我想要显示前100名,但如果没有100只想显示那些而不在结果中包含零计数
SELECT TOP (100) UserName, FullName_Company, FullName,
(SELECT COUNT(*)
FROM dbo.Member_Ref
WHERE (RefFrom_UserName = dbo.view_Members.UserName) AND (RefDate >= '5/1/2010') AND (RefDate <= '6/1/2010'))
AS RefFromCount
FROM dbo.view_Members
WHERE (MemberStatus = N'Active')
ORDER BY RefFromCount DESC
我尝试过使用Group By和HAVING COUNT(*)&gt; 0都使用相同的错误结果
答案 0 :(得分:3)
考虑:
SELECT TOP (100) UserName, FullName_Company, FullName,
(SELECT COUNT(*)
FROM dbo.Member_Ref
WHERE (RefFrom_UserName = dbo.view_Members.UserName)
AND (RefDate >= '5/1/2010') AND (RefDate <= '6/1/2010'))
HAVING COUNT(*) > 0
AS RefFromCount
FROM dbo.view_Members
WHERE (MemberStatus = N'Active')
ORDER BY RefFromCount DESC
内部查询中添加的HAVING
子句将固有地删除0个计数的结果。
答案 1 :(得分:1)
我加入了一个包含数量的子查询,并在第I部分中按数量过滤&gt; 0
SELECT TOP (100) UserName, FullName_Company, FullName, Quantity AS RefFromCount
FROM dbo.view_Members
JOIN (
SELECT RefFrom_UserName, COUNT(*) as Quantity
FROM dbo.Member_Ref
WHERE (RefDate >= '5/1/2010') AND (RefDate <= '6/1/2010')
GROUP BY RefFrom_UserName
) as Q on Q.RefFrom_UserName = dbo.view_Members.UserName
WHERE (MemberStatus = N'Active')
AND Quantity > 0
ORDER BY RefFromCount DESC
答案 2 :(得分:0)
SQL Server 2005在MySQL中是否有类似“限制”的关键字? (如果是这样,对于这种任务有一个非常简单的解决方案)