Вы можете использовать функцию IF:
select invoice_id, invoice_balance,
IF(DATEDIFF(DATE(due_date), DATE(NOW()))<=7
, IF(DATEDIFF(DATE(due_date), DATE(NOW()))>0, 'today+7', 'today')
, IF(DATEDIFF(DATE(due_date), DATE(NOW()))<=30, '7dayto30day', 'morethan30days')
) as due_period
from my_invoice_master
В этом запросе отображаются все записи по периодам.Если значение due_date будет меньше, чем сегодня, оно получает вас «сегодня».
Если вам нужна сумма invoice_balance по invoice_id , используйте это:
select invoice_id, sum(invoice_balance),
@due_period:= IF(DATEDIFF(DATE(due_date), DATE(NOW()))<=7
, IF(DATEDIFF(DATE(due_date), DATE(NOW()))>0, 'today+7', 'today')
, IF(DATEDIFF(DATE(due_date), DATE(NOW()))<=30, '7dayto30day', 'morethan30days')
) as due_period
from my_invoice_master
group by invoice_id, @due_period
Если вам нужна сумма invoice_balance по периодам, используйте это:
select sum(invoice_balance),
@due_period:= IF(DATEDIFF(DATE(due_date), DATE(NOW()))<=7
, IF(DATEDIFF(DATE(due_date), DATE(NOW()))>0, 'today+7', 'today')
, IF(DATEDIFF(DATE(due_date), DATE(NOW()))<=30, '7dayto30day', 'morethan30days')
) as due_period
from my_invoice_master
group by @due_period