SELECT
	max( CASE dw WHEN 2 THEN dm END ) AS Mo,
	max( CASE dw WHEN 3 THEN dm END ) AS Tu,
	max( CASE dw WHEN 4 THEN dm END ) AS We,
	max( CASE dw WHEN 5 THEN dm END ) AS Th,
	max( CASE dw WHEN 6 THEN dm END ) AS Fr,
	max( CASE dw WHEN 7 THEN dm END ) AS Sa,
	max( CASE dw WHEN 1 THEN dm END ) AS Su
FROM
	(
	SELECT
		DATE_FORMAT( dy, '%u' ) wk,
		DATE_FORMAT( dy, '%d' ) dm,
		DATE_FORMAT( dy, '%w' ) + 1 dw
	FROM
		(
		SELECT
			DATE_ADD( dy, INTERVAL t500.id - 1 DAY ) dy,
			x.mth
		FROM
			(
			SELECT
				DATE_ADD(
					CURRENT_DATE,
					INTERVAL - DAYOFMONTH( CURRENT_DATE ) + 1 DAY
				) dy,
				DATE_FORMAT( CURRENT_DATE, '%m' ) mth
			FROM
			DUAL
			) x,
			t500
		WHERE
			t500.id <= 31
			AND DATE_FORMAT(
				DATE_ADD( dy, INTERVAL t500.id - 1 DAY ),
				'%m'
			) = mth
		) y
	) z
GROUP BY
	wk
ORDER BY
	wk
03-11 02:29