Pra quem não está acostumado: não considere nada do outro mundo.
É algo até conhecido, o IIF()
conhece este?
IF .NOT. notafiscal->( dbSEEK( pedido ) )
data = pedido->Data
ELSE
data = notafiscal->Data
ENDIF
é equivalente a este:
data = iif( notafiscal->( dbSeek( pedido ) ), notafiscal->Data, pedido->Data )
que se for SET RELATION simplifica:
SET RELATION ...
data = iif( ! notafiscal->( eof() ), notafiscal->Data, pedido->Data )
E no caso do MySQL, é testar NULL, que significa que não encontrou nada (porque foi relacionado também)
IF( jpnotfis.notfis is null, jppedido.data, jpnotfis.data )
Ou seja, praticamente tudo do mesmo jeito.
o SQL é praticamente um "dBASE" que evoluiu, e ficou incorporado ao servidor.
E dBase... é com a gente mesmo !!!!
É voltar ao passado... ao futuro do passado.
Talvez até quem começou no tempo do dBASE tenha mais facilidade, porque o dBASE realmente era como um servidor SQL local.
Só não dava pra usar pelo aplicativo.....
Lógico, aproveitei pra mexer mais no comando.
Ao invés de agrupar por ano,mes ou format( data, '%Y-%m' ), agrupei por LAST_DAY(), que equivale ao último dia do mês da data.
Ao fazer isso, está agrupado por mês, sem complicações extras.