我认为从我拥有的表格和我想要的结果开始是最容易的。
Name | Date
A | 03/01/2012
A | 03/01/2012
B | 02/01/2012
A | 02/01/2012
B | 02/01/2012
A | 02/01/2012
B | 01/01/2012
B | 01/01/2012
A | 01/01/2012
我希望我的查询结果是:
Name | 01/01/2012 | 02/01/2012 | 03/01/2012
A | 1 | 2 | 2
B | 2 | 2 | 0
所以基本上我想计算具有相同日期的行数,但是对于每个单独的名称。所以一个简单的按日期分组是行不通的,因为它会将名称合并在一起。然后我想输出一个表格,使用 php 显示每个日期的计数。
我已经看到答案建议是这样的:
SELECT
NAME,
SUM(CASE WHEN GRADE = 1 THEN 1 ELSE 0 END) AS GRADE1,
SUM(CASE WHEN GRADE = 2 THEN 1 ELSE 0 END) AS GRADE2,
SUM(CASE WHEN GRADE = 3 THEN 1 ELSE 0 END) AS GRADE3
FROM Rodzaj
GROUP BY NAME
所以我想我会有一种方法来调整它,但我想知道是否有另一种方法,或者那是最有效的?我可能在想,如果 while 循环每次只输出一个特定的名称和日期以及计数,那么第一个结果将是 A,01/01/2012,1 然后是下一个 A,02/01/2012, 2 - A,03/01/2012,3 - B,01/01/2012,2 等,那么也许这可以通过不同的技术实现,但不确定这样的事情是否可行以及是否有效。
所以我基本上是想看看是否有人对此有任何不合时宜的想法,以及他们将如何进行比较。
我希望我能很好地解释一切,并提前感谢您的帮助。