Vedi se così va bene.
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
edit. Non mi è ben chiaro se la data sia uno unix timestamp o un semplice datetime.
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