【问题标题】:Top 10 unless count is zero前 10 名,除非计数为零
【发布时间】:2010-06-09 01:32:59
【问题描述】:

这可能很容易,但我无法理解。 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(*)>0 都得到相同的错误结果

【问题讨论】:

    标签: sql count


    【解决方案1】:

    考虑:

    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 的结果。

    【讨论】:

    • 谢谢,我试过了,它仍然返回 100 个项目,但是对于之前显示为 0 的列表的余额,RefFromCount 为 NULL。如果有 100 个或只有 100 个项目,我想显示 100 个项目90 如果这就是全部的话。
    • HAVING COUNT(*) > 0 不会返回 NULL,它会显示和用户计数为零?
    • 我也希望如此,但这就是我得到的结果
    【解决方案2】:

    我加入一个带有数量的子查询,在 where 部分我按数量 > 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
    

    【讨论】:

      【解决方案3】:

      SQL Server 2005 在 MySQL 中是否有类似“limit”的关键字? (如果是这样,这种任务有一个非常简单的解决方案)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-20
        • 1970-01-01
        • 1970-01-01
        • 2016-06-03
        • 2022-11-14
        • 1970-01-01
        相关资源
        最近更新 更多