我正在尝试一次显示一天中多项 claim 的状态。例如,“date1”有 3 个声明。每个 claim 都有不同的状态。如何显示“date1”内所有 claim 的状态计数。也就是说,我想按最早到最晚的日期对我的结果进行排序,然后用三列来计算当天有多少 claim 具有该状态。三个状态列加起来就是当天的 claim 总数。这就是我希望它看起来像的样子:(St1 - St3 代表独特的状态)
Date St1 St2 St3
12-02-12 | 1 | 2 | 3
12-03-12 | 2 | 5 | 3
12-04-12 | 7 | 3 | 8
我开始使用的查询看起来像这样,但它完全不正确。
SELECT dates, statuses, COUNT(*) AS St1 FROM table_dates GROUP BY dates;
这是我尝试只获取一个状态的计数。想我必须从某个地方开始。谢谢。
最佳答案
您想将状态添加到您的 GROUP BY:
SELECT dates, status, COUNT(*) AS cnt
FROM table_dates
GROUP BY dates, status
这将以与您要求的格式略有不同的格式给出您的结果:
Date | Status | cnt 2012-12-02 | 1 | 1 2012-12-02 | 2 | 2 2012-12-02 | 3 | 3 2012-12-03 | 1 | 2 2012-12-03 | 2 | 5 2012-12-03 | 3 | 3 2012-12-04 | 1 | 7 2012-12-04 | 2 | 3 2012-12-04 | 3 | 8
这可能是一种更好的格式,因为如果您稍后添加新状态,您的数据库架构、SQL 查询和客户端代码都不需要更改。
关于mysql - MySQL 一天内多个项目的单独计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267791/