背景
我正在使用CASE
2010 年、2011 年和 2012 年的表达式对这些数据进行透视,并按公司分组。正在旋转/返回的“度量”是max(state)
针对每个案例/每年的,并且效果很好。
问题
我正在尝试max(invoice_date)
从每个 的所有记录中获取最新记录company_name
,但查询仅返回满足表达式的date
位置CASE
而不是max(invoice_date)
.
以下是表格数据的示例:
company_name | invoice_date | year | state
--------------------------------------------------------
CompanyA | 20130101 | 2012 | 1
CompanyA | 20130101 | 2012 | 3
CompanyB | 20130102 | 2012 | 2
CompanyA | 20120103 | 2011 | 3
CompanyB | 20120104 | 2011 | 1
CompanyB | 20120104 | 2011 | 3
CompanyA | 20110101 | 2010 | 4
CompanyB | 20110105 | 2010 | 2
这是所需视图的示例:
company_name | invoice_date | 2010 | 2011 | 2012
--------------------------------------------------------------
CompanyA | 20130101 | 4 | 3 | 3
CompanyB | 20130102 | 2 | 3 | 2
这是我得到的结果示例:
company_name | invoice_date | 2010 | 2011 | 2012
--------------------------------------------------------------
CompanyA | 20110101 | 4 | 3 | 3
CompanyB | 20110105 | 2 | 3 | 2
请注意,date
A 公司和 B 公司的日期均为 2011 年,这不是这两家公司表中的最新日期。我正在尝试获取max(invoice_date)
.
解决了:
select
company_name AS company_name,
max(invoice_date) AS invoice_date,
max((case when (year = 2010) then state else 0 end)) AS `2010`,
max((case when (year = 2011) then state else 0 end)) AS `2011`,
max((case when (year = 2012) then state else 0 end)) AS `2012`,
from tbl
group by company_name
order by invoice_date desc