1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | SELECT ym , MIN ( CASE dw WHEN 1 THEN d END ) Sun , MIN ( CASE dw WHEN 2 THEN d END ) Mon , MIN ( CASE dw WHEN 3 THEN d END ) Tue , MIN ( CASE dw WHEN 4 THEN d END ) Wed , MIN ( CASE dw WHEN 5 THEN d END ) Thu , MIN ( CASE dw WHEN 6 THEN d END ) Fri , MIN ( CASE dw WHEN 7 THEN d END ) Sat FROM ( SELECT date_format(dt, '%Y%m' ) ym , Week(dt) w , Day (dt) d , DayofWeek(dt) dw FROM ( SELECT CONCAT(y, '0101' ) + INTERVAL a*100 + b*10 + c DAY dt FROM ( SELECT 0 a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 ) a , ( SELECT 0 b UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) b , ( SELECT 0 c UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) c , ( SELECT '2015' y) d WHERE a*100 + b*10 + c < DayOfYear(CONCAT(y, '1231' )) ) a ) a GROUP BY ym, w ; |