Código: Selecionar todos
:cSQL := "SELECT IDPEDIDO, PDCADASTRO, PDVENDEDOR, PDTRANSA," + ;
" CONCAT( RPAD( PRECNPJ.CNPJNOME, 40, ' ' ), LPAD( JPCADASTRO.CDCNPJ, 10, ' ' ) ) AS GRUPOCLIENTE," + ;
" RPAD( JPCADASTRO.CDCNPJ, 10, ' ' ) AS CNPJRAIZ," + ;
" FROM JPPEDIDO" + ;
" LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPPEDIDO.PDCADASTRO" + ;
" LEFT JOIN (" + ;
" SELECT RPAD( CDCNPJ, 10, ' ' ) AS CNPJPREFIXO, CDNOME AS CNPJNOME FROM JPCADASTRO GROUP BY RPAD( CDCNPJ, 10, ' ' ) ) AS PRECNPJ" + ;
" ON RPAD( JPCADASTRO.CDCNPJ, 10, ' ' ) = PRECNPJ.CNPJPREFIXO" + ;
- tá falhando
- nome pode ser de um cadastro desativado
- se usar a razao social normal, pode ter nome - cidade, e isso causa quebra
- não posso agrupar por cnpj raiz, porque tem níveis, vém sempre detalhado
nova idéia:
um select Max( id ), left( cnpj, 10 ) agrupado por left( cnpj, 10 ), pra pegar o cadastro mais recente.
e mais um select disso com os nomes relacionados, relacionando o resultado no resto.
