【发布时间】:2011-12-02 06:03:36
【问题描述】:
如果我的 MySQL 表看起来像这样:
company_name 操作页数 ------------------------------------------- 公司 A 打印 3 公司 A 打印 2 公司 A 打印 3 B公司邮箱 公司 B 打印 2 公司 B 打印 2 公司 B 打印 1 公司 A 打印 3是否可以运行 MySQL 查询以获得如下输出:
company_name EMAIL 打印 1 页 打印 2 页 打印 3 页 -------------------------------------------------- ------------ A公司 0 0 1 3 B公司 1 1 2 0这个想法是 pagecount 可以变化,因此输出列的数量应该反映这一点,每个 action/pagecount 对对应一列,然后每个 company_name 的命中数。我不确定这是否称为数据透视表,但有人建议这样做?
【问题讨论】:
-
这称为旋转,在 SQL 之外进行这种转换要快得多。
-
Excel 会处理这样的事情,在 MySQL 中真的很难,因为没有“CROSSTAB”运算符 :(
-
是的,它目前是在 Excel 中手动完成的,我们正在尝试将其自动化。
-
@N.B.是建议在我们的应用层执行它还是在我们的应用层执行它更简单?
-
@giannischristofakis - 这真的取决于你和你的同事认为什么更简单。自从我发表评论(4 年)以来,技术已经赶上了很多,所以它完全取决于你觉得更好 - 无论是在应用程序还是 SQL 中。例如,在我的工作中,我们处理类似的问题,但我们将 SQL 和应用内方法结合起来。基本上,除了给出固执己见的答案之外,我无能为力,这不是你所需要的:)