Por muita coincidência estava mexendo num agora, com group e having.
WITH OBJECT cnSQL
cSQLGroup := "LPAD( YEAR( LFDATLAN ), 4, '0' ), LPAD( MONTH( LFDATLAN ), 2, '0' )"
IF nOpcTotais == 1
cSQLGroup += ", LPAD( Day( LFDATLAN ), 2, '0' )"
ENDIF
cSQLGroup := "CONCAT_WS( '-', " + cSQLGroup + " )"
:cSQL := "SELECT LFTIPLAN, " + cSQLGroup + " AS DATA, " + ;
" SUM( LFVALCON ) AS VALCON, SUM( IF( LFICMVAL = 0, 0, LFICMBAS ) ) AS ICMBAS," + ;
" SUM( LFICMVAL ) AS ICMVAL, SUM( LFICMOUT ) AS ICMOUT," + ;
" SUM( IF( LFVALCON - LFICMBAS - LFICMOUT > 0, LFVALCON - LFICMBAS - LFICMOUT, 0 ) ) AS ICMISE," + ;
" SUM( LFIPIVAL ) AS IPIVAL, SUM( IF( LFIPIVAL > 0, LFIPIBAS, 0 ) ) AS IPIBAS," + ;
" SUM( IF( LFVALCON - LFIPIBAS - LFIPIOUT - LFIPIVAL > 0, LFVALCON - LFIPIBAS - LFIPIOUT - LFIPIVAL, 0 ) ) AS IPIISE," + ;
" SUM( LFIPIOUT ) AS IPIOUT" + ;
" FROM JPFISCAL" + ;
" WHERE LFTIPLAN IN ( '1', '2' )"
IF nOpcData == 2
:cSQL += " AND LFDATLAN BETWEEN CAST( " + DateSQL( dDataInicial ) + " AS DATE )" + ;
" AND CAST( " + DateSQL( dDataFinal ) + " AS DATE )"
ENDIF
IF nOpcGrf <> 1
:cSQL += " AND LFGRF " + iif( nOpcGrf == 2, "=", "<>" ) + " 'S'"
ENDIF
:cSQL += " GROUP BY LFTIPLAN, " + cSQLGroup + ;
" HAVING VALCON > 0" + ;
" ORDER BY LFTIPLAN DESC, DATA"
:Execute()
Esta parte é pra facilitar a construção do comando, porque se repete, é o total pela data, por dia ou por mês
cSQLGroup := "LPAD( YEAR( LFDATLAN ), 4, '0' ), LPAD( MONTH( LFDATLAN ), 2, '0' )"
IF nOpcTotais == 1
cSQLGroup += ", LPAD( Day( LFDATLAN ), 2, '0' )"
ENDIF
cSQLGroup := "CONCAT_WS( '-', " + cSQLGroup + " )"