Vedi se così va bene.
edit. Non mi è ben chiaro se la data sia uno unix timestamp o un semplice datetime.codice:select miadata, max(case when colonna_a = 'x' then quanti else 0 end) as totale_x, max(case when colonna_a = 'y' then quanti else 0 end) as totale_y from ( select colonna_a, from_unixtime(colonna_b,"%Y-%m-%d") as miadata, count(colonna_a) as quanti from nome_tabella where datediff(now(),from_unixtime(colonna_b,"%Y-%m-%d")) < 30 group by colonna_a,miadata ) as tab group by miadata order by miadata desc
Nel caso sia un datetime
codice:select miadata, max(case when colonna_a = 'x' then quanti else 0 end) as totale_x, max(case when colonna_a = 'y' then quanti else 0 end) as totale_y from ( select colonna_a, date_format(colonna_b,"%Y-%m-%d") as miadata, count(colonna_a) as quanti from nome_tabella where datediff(curdate(),date_format(colonna_b,"%Y-%m-%d")) < 30 group by colonna_a,miadata ) as tab group by miadata order by miadata desc

Rispondi quotando