SQL计数麻烦

标签 sql sql-server sql-server-2008 count

我有以下场景:

我需要计算有多少客户处于未付款状态。并且此计数必须仅显示计数 >= 2 的计数。这部分我做得正确(我认为):

--SELECTING Client Count
SELECT Client, COUNT(HyphenStatus) as UnpaidCount
FROM CasesFromSimplicity
WHERE HyphenStatus = 'UnPaid' AND FCManager = 'Mike'
GROUP BY Client
HAVING COUNT(HyphenStatus) >= 2
ORDER BY Client ASC

然后我需要为经理 View 创建一个如下所示的表:

+-----------+--------------+----------------+------------+
| FCManager | CountingTwos | CountingThrees | FourOrMore |
+-----------+--------------+----------------+------------+
| Mike      |            2 |              1 |          1 |
+-----------+--------------+----------------+------------+

这告诉我,我的顾问 Mike 有两个客户,计数为 2一个客户计数为 3一个客户端计数为 4

我目前已经进行了以下查询,但这似乎不起作用。

--Selecting the count for manager
SELECT
FCManager
,(SELECT COUNT(HyphenStatus) FROM CasesFromSimplicity WHERE HyphenStatus = 'UnPaid' AND FCManager = 'Mike' HAVING COUNT(HyphenStatus) = 2) CountingTwos
,(SELECT COUNT(HyphenStatus) FROM CasesFromSimplicity WHERE HyphenStatus = 'UnPaid' AND FCManager = 'Mike' HAVING COUNT(HyphenStatus) = 3) CountingThrees
,(SELECT COUNT(HyphenStatus) FROM CasesFromSimplicity WHERE HyphenStatus = 'UnPaid' AND FCManager = 'Mike' HAVING COUNT(HyphenStatus) >= 4) FourOrMore
FROM CasesFromSimplicity
GROUP BY FCManager

有人可以告诉我我做错了什么吗?或者将我发送到正确的位置来阅读此内容。我在搜索时找不到任何东西。 我在发帖时一直在想,我需要在子查询中使用分组依据,但这会返回超过 1 个结果并且不起作用?

我创建了一个SQL Fiddle让您实时查看我的问题。

如有任何帮助,我们将不胜感激,谢谢迈克。

如果我需要进一步解释,请告诉我?我正在使用SQL SERVER 2008

最佳答案

好吧,假设 SQL Server 2005+,您可以这样做:

;WITH CTE AS
(
    SELECT  FCManager,
            Client, 
            COUNT(HyphenStatus) as UnpaidCount
    FROM CasesFromSimplicity
    WHERE HyphenStatus = 'UnPaid' 
    GROUP BY FCManager,
             Client
    HAVING COUNT(HyphenStatus) >= 2
)
SELECT  FCManager,
        SUM(CASE WHEN UnpaidCount = 2 THEN 1 ELSE 0 END) CountingTwos,
        SUM(CASE WHEN UnpaidCount = 3 THEN 1 ELSE 0 END) CountingThrees,
        SUM(CASE WHEN UnpaidCount > 3 THEN 1 ELSE 0 END) FourOrMore 
FROM CTE 
GROUP BY FCManager

Here is修改后的sqlfiddle。

关于SQL计数麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23544709/

相关文章:

sql - 涉及类似异或条件的 SQL 查询问题

mysql - 返回计数为 0 的行

php - 尝试实现全文搜索时出现SQL错误

sql - 如何在SSRS中使用表达式仅显示日期部分?

sql-server - 如何将 nvarchar 解码为文本(SQL Server 2008 R2)?

sql - 查找忽略重叠的总分钟数(将基于光标的答案转换为 CTE)

Mysql查询包含

sql-server - 使用 powershell 部署带有变量替换的 dacpac

批量插入期间的 SQL Server 表锁定

sql - 检索具有某些条件的所有 SP 的列表