嗨,考虑一下这样的表
现在我需要像这样的输出
这是我的要求。我刚刚给了3个注册日期。考虑有N个注册日期和有效日期。如何为此编写查询。谢谢你的帮助。
答案 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中本地完成。相反,您应该在中间层或报表引擎中构建此查询。