如何在Tableau中按6个月为周期对年份进行分组?
按6个月周期分组日期的实现方法
以下分SQL和Excel两种场景给出具体实现方案:
SQL实现
场景1:自定义起始月份的6个月分组(匹配你的示例结果)
如果需要从3月开始划分6个月周期(3-8月为一组,9月-次年2月为另一组),并显示每组的代表月份(如3月、次年2月),可以使用以下查询:
SELECT CASE WHEN MONTH(FirstPurchaseDate) BETWEEN 3 AND 8 THEN 'March' ELSE 'February' END AS [Month of FirstPurchaseDate], CASE WHEN MONTH(FirstPurchaseDate) BETWEEN 3 AND 8 THEN YEAR(FirstPurchaseDate) ELSE YEAR(FirstPurchaseDate) + CASE WHEN MONTH(FirstPurchaseDate) >=9 THEN 0 ELSE 1 END END AS Year, COUNT(*) AS PurchaseCount -- 可选,统计每组的购买记录数 FROM YourTableName GROUP BY CASE WHEN MONTH(FirstPurchaseDate) BETWEEN 3 AND 8 THEN 1 ELSE 2 END, CASE WHEN MONTH(FirstPurchaseDate) BETWEEN 3 AND 8 THEN YEAR(FirstPurchaseDate) ELSE YEAR(FirstPurchaseDate) + CASE WHEN MONTH(FirstPurchaseDate) >=9 THEN 0 ELSE 1 END END ORDER BY Year, [Month of FirstPurchaseDate];
这个查询会将3-8月的日期归到当年3月组,9-12月归到次年2月组,1-2月归到当年2月组,最终输出类似你期望的分组结果。
场景2:按自然半年分组(1-6月、7-12月)
如果只需按自然年的上下半年分组,可使用:
SELECT CASE WHEN MONTH(FirstPurchaseDate) BETWEEN 1 AND 6 THEN 'January' ELSE 'July' END AS [Month of FirstPurchaseDate], YEAR(FirstPurchaseDate) AS Year, COUNT(*) AS PurchaseCount FROM YourTableName GROUP BY CASE WHEN MONTH(FirstPurchaseDate) BETWEEN 1 AND 6 THEN 1 ELSE 2 END, YEAR(FirstPurchaseDate) ORDER BY Year, [Month of FirstPurchaseDate];
Excel实现
- 假设日期数据在A列,在B列输入公式计算周期标识:
- 若要显示周期起始月份(如3月、9月):
=IF(MONTH(A2)>=3, DATE(YEAR(A2),3,1), DATE(YEAR(A2)-1,9,1)) - 若要显示周期结束月份(如8月、次年2月):
=IF(MONTH(A2)>=3, DATE(YEAR(A2),8,1), DATE(YEAR(A2),2,1))
- 若要显示周期起始月份(如3月、9月):
- 选中B列,设置单元格格式为
mmmm yyyy(即显示为March 2019样式) - 插入数据透视表,将B列拖至「行」区域,即可完成6个月周期的分组。
内容的提问来源于stack exchange,提问作者beth_9
相关产品推荐
相关产品推荐

