在php / MySQL中处理数据透视表的最佳方法是什么(或者那种效果)
我有一个返回信息的查询
id eng week type sourceid userid
95304 AD 2012-01-02 Technical 744180 271332
95308 AD 2012-01-02 Non-Technical 744180 280198
96492 AD 2012-01-23 Non-Technical 1056672 283843
97998 AD 2012-01-09 Technical 1056672 284264
99608 AD 2012-01-16 Technical 1056672 283842
99680 AD 2012-01-02 Technical 1056672 284264
100781 AD 2012-01-23 Non-Technical 744180 280671
我想在PHP中构建一个报告,该报告按周开始的列标题组进行计数。 E.g。
week commencing: 2012-01-02 2012-01-09 2012-01-16 2012-01-23 2012-01-30
Total: 3 1 1 1 0
Technical: 2 1 1 0 0
Non-Technical: 1 0 0 1 0
但我不确定从哪里开始,因为标题是动态的,具体取决于报告将在哪个月运行。
我知道如何传递月份的详细信息并检索PHP中的所有数据,但它目前在一列中输出,而不是能够将其分组并将其放入数组中。
任何帮助表示赞赏!
答案 0 :(得分:4)
您可以使用子查询执行此操作,然后生成和聚合此数据。尝试一下这一点:
select week,
count(*) as total,
sum(technical) as technical,
sum(non_technical) as non_technical)
from(
select week,
case(type) when 'Technical' then 1 else 0 END as technical,
case(type) when 'Non-Technical' then 1 else 0 END as non_technical
) as data
GROUP BY week