SELECT DATEDIFF(day, pivotTable.start_date, pivotTable.end_date) AS date_diff, COUNT(*) AS cnt FROM (SELECT start_date, end_date FROM mainTable) AS pivotTable GROUP BY DATEDIFF(day, pivotTable.start_date, pivotTable.end_date) ORDER BY DATEDIFF(day, pivotTable.start_date, pivotTable.end_date);
解释:此解决方案使用了内部查询将主表转换为透视表,然后利用DATEDIFF(day,pivotTable.start_date,pivotTable.end_date)函数将每个行的日期差分类,并使用COUNT(*)函数计算每个类别的行数。最后,按日期差排序并返回结果。