mysql查询通过在两个列和行中的轴(即)都有时间戳

时间:2010-12-10 07:03:20

标签: mysql sql

嗨,考虑一下这样的表 alt text

现在我需要像这样的输出

alt text

这是我的要求。我刚刚给了3个注册日期。考虑有N个注册日期和有效日期。如何为此编写查询。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您寻求的通常称为交叉表。以下是一个可以产生所需结果的示例:

Select registrationDate
    , Sum( Case When ValidityDate = '2010-10-25' Then 1 Else 0 End ) As `2010-10-25`
    , Sum( Case When ValidityDate = '2010-10-26' Then 1 Else 0 End ) As `2010-10-26`
    , Sum( Case When ValidityDate = '2010-10-27' Then 1 Else 0 End ) As `2010-10-27`
From MyTable
Group By registrationDate

如果您想要动态构建列,那么您正在寻找动态交叉表。通常,SQL语言不是围绕动态列生成设计的,因此在不使用动态SQL的情况下,这不能在MySQL中本地完成。相反,您应该在中间层或报表引擎中构建此查询。