Boa tarde, eu gostaria de saber, como faço para em uma mesma página de relatório trazer colunas diferentes com resultado da query, alterando um valor dentro da query, pra que fique mais claro é mais ou menos assim
SELECT
AGENTE."NOME" AS AGENTE_NOME,
META."VALOR" AS META_VALOR,
CONTRATO."VALORCOMISSIONADO" AS CONTRATO_VALORCOMISSIONADO
FROM
"AGENTE" AGENTE INNER JOIN "META" META ON AGENTE."CODIGO" = META."CODAGENTE"
INNER JOIN "CONTRATO" CONTRATO ON AGENTE."CODIGO" = CONTRATO."AGENTE"
INNER JOIN "BANCOS" BANCOS ON CONTRATO."BANCO" = BANCOS."CODIGO"
INNER JOIN "FINANCEIRA" FINANCEIRA ON BANCOS."FINANCEIRA" = FINANCEIRA."CODIGO"
INNER JOIN "TIPO" TIPO ON BANCOS."TIPO" = TIPO."CODIGO"
WHERE
AGENTE."ATIVO" LIKE 'S'
AND AGENTE."TIPOAGENTE" LIKE '5'
AND FINANCEIRA."CODIGO" LIKE '1'
AND TIPO."GRUPO" LIKE '4'
AND CONTRATO."AGENTESECUNDARIO" NOT LIKE '22'
AND CONTRATO."STATUSAP" LIKE '6'
AND CONTRATO."MESL" LIKE '10'
AND CONTRATO."ANOL" LIKE '2009'
Isto traria o resultado na coluna 1
SELECT
AGENTE."NOME" AS AGENTE_NOME,
META."VALOR" AS META_VALOR,
CONTRATO."VALORCOMISSIONADO" AS CONTRATO_VALORCOMISSIONADO
FROM
"AGENTE" AGENTE INNER JOIN "META" META ON AGENTE."CODIGO" = META."CODAGENTE"
INNER JOIN "CONTRATO" CONTRATO ON AGENTE."CODIGO" = CONTRATO."AGENTE"
INNER JOIN "BANCOS" BANCOS ON CONTRATO."BANCO" = BANCOS."CODIGO"
INNER JOIN "FINANCEIRA" FINANCEIRA ON BANCOS."FINANCEIRA" = FINANCEIRA."CODIGO"
INNER JOIN "TIPO" TIPO ON BANCOS."TIPO" = TIPO."CODIGO"
WHERE
AGENTE."ATIVO" LIKE 'S'
AND AGENTE."TIPOAGENTE" LIKE '5'
AND FINANCEIRA."CODIGO" LIKE '1'
AND TIPO."GRUPO" LIKE '4'
AND CONTRATO."AGENTESECUNDARIO" NOT LIKE '22'
AND CONTRATO."STATUSAP"/*-->*/ NOT LIKE '6'
AND CONTRATO."MESL" LIKE '10'
AND CONTRATO."ANOL" LIKE '2009'
Isto traria o resultado na coluna 2
SELECT
AGENTE."NOME" AS AGENTE_NOME,
META."VALOR" AS META_VALOR,
CONTRATO."VALORCOMISSIONADO" AS CONTRATO_VALORCOMISSIONADO
FROM
"AGENTE" AGENTE INNER JOIN "META" META ON AGENTE."CODIGO" = META."CODAGENTE"
INNER JOIN "CONTRATO" CONTRATO ON AGENTE."CODIGO" = CONTRATO."AGENTE"
INNER JOIN "BANCOS" BANCOS ON CONTRATO."BANCO" = BANCOS."CODIGO"
INNER JOIN "FINANCEIRA" FINANCEIRA ON BANCOS."FINANCEIRA" = FINANCEIRA."CODIGO"
INNER JOIN "TIPO" TIPO ON BANCOS."TIPO" = TIPO."CODIGO"
WHERE
AGENTE."ATIVO" LIKE 'S'
AND AGENTE."TIPOAGENTE" LIKE '5'
AND FINANCEIRA."CODIGO" LIKE '1'
AND TIPO."GRUPO" LIKE '4'
AND CONTRATO."AGENTESECUNDARIO" "/*-->*/ LIKE '22'
AND CONTRATO."STATUSAP" LIKE '6'
AND CONTRATO."MESL" LIKE '10'
AND CONTRATO."ANOL" LIKE '2009'
Isto traria o resultado na coluna 3.
eu num sei se consegui explicar direito, mas algúem pode me ajudar?
Entendi o que você quis dizer,mas na prática, não sei como fazer isto, estou procurando no google mas até agora não achei, continuo procurando se puder me dar um exemplo eu agradeço!!!..
Bom a principio consegui resolver com subrelatorios, ou seja estou conseguindio trazer o subrelatorio no mesmo relatório o problema agora é com questão ao comando no firebird
SELECT
sum(CONTRATO."VALORCOMISSIONADO") AS CONTRATO_VALORCOMISSIONADO,
AGENTE."NOME" AS AGENTE_NOME
FROM
"AGENTE" AGENTE INNER JOIN "META" META ON AGENTE."CODIGO" = META."CODAGENTE"
INNER JOIN "CONTRATO" CONTRATO ON AGENTE."CODIGO" = CONTRATO."AGENTE"
INNER JOIN "BANCOS" BANCOS ON CONTRATO."BANCO" = BANCOS."CODIGO"
INNER JOIN "FINANCEIRA" FINANCEIRA ON BANCOS."FINANCEIRA" = FINANCEIRA."CODIGO"
INNER JOIN "TIPO" TIPO ON BANCOS."TIPO" = TIPO."CODIGO"
WHERE
AGENTE."NOME" LIKE 'BRADESCO 0052 A SINERGIA ARAPONGAS'
AND AGENTE."ATIVO" LIKE 'S'
AND AGENTE."TIPOAGENTE" LIKE '5'
AND FINANCEIRA."CODIGO" LIKE '1'
AND TIPO."GRUPO" LIKE '4'
AND CONTRATO."STATUSAP" LIKE '1'
OR CONTRATO."STATUSAP" LIKE '2'
OR CONTRATO."STATUSAP" LIKE '4'
OR CONTRATO."STATUSAP" LIKE '5'
OR CONTRATO."STATUSAP" LIKE '7'
AND CONTRATO."AGENTESECUNDARIO" NOT LIKE '22'
GROUP BY
AGENTE."NOME"
Esta pesquisa deveria me retornar somente resultados quando o nome do agente fosse ‘0052 A SINERGIA ARAPONGAS’, porém esta trazendo resultado de todos os 'AGENTE.NOME’eu acho que o erro esta nas condições “OR” ja que se eu fizer
AGENTE."NOME" LIKE 'BRADESCO 0052 A SINERGIA ARAPONGAS'
AND AGENTE."ATIVO" LIKE 'S'
AND AGENTE."TIPOAGENTE" LIKE '5'
AND FINANCEIRA."CODIGO" LIKE '1'
AND TIPO."GRUPO" LIKE '4'
AND CONTRATO."STATUSAP" LIKE '1'
OR CONTRATO."STATUSAP" LIKE '2'
AND CONTRATO."AGENTESECUNDARIO" NOT LIKE '22'
GROUP BY
AGENTE."NOME"
ele traz o resultado somente deste “AGENTE.NOME”,agora se colocar os demais "OR"volta a retornar todos os resultados, alguem sabe alguma outra maneira de criar esta condição?
então julio como eu disse, eu consegui trazer o subrelatório o problema agora fugiu um pouco do ireport, o problema é com os comandos firebird, ja que eu tenho testado o comando acima direto no ibexpert e ele não traz os resultados da maneira que eu gostaria
Será que não é por causa do LIKE? O Like vai te retornar qualquer nome que tenha BRADESCO ou 0052 ou A ou SINERGIA ou ARAPONGAS, ele procura palavra por palavra, se vc tirar o LIKE ele ira procurar pelo nome intero e retornará só nome identico a esse
certo e o que vc sugere no lugar , “=” ou tem mais algum que traria o resultado exato, outra coisa, acho que eu não estou sabendo fazer a condição or ja que se eu colocar:
AND CONTRATO."STATUSAP" LIKE '1'
OR CONTRATO."STATUSAP" LIKE '2'
da certo , agora se eu colocar:
AND CONTRATO."STATUSAP" LIKE '1'
OR CONTRATO."STATUSAP" LIKE '2'
OR CONTRATO."STATUSAP" LIKE '4'
OR CONTRATO."STATUSAP" LIKE '5'
OR CONTRATO."STATUSAP" LIKE '7'
AND CONTRATO."STATUSAP" LIKE '1'
OR CONTRATO."STATUSAP" LIKE '2'
Aqui ele vai retorna o resultado quando o STATUSAP for 1 OU for 2 certo?
AND CONTRATO."STATUSAP" LIKE '1'
OR CONTRATO."STATUSAP" LIKE '2'
OR CONTRATO."STATUSAP" LIKE '4'
OR CONTRATO."STATUSAP" LIKE '5'
OR CONTRATO."STATUSAP" LIKE '7'
Ja aqui ele vai retorna o resultado quando o STATUSAP for 1 OU for 2 OU for 4 OR for 5 OU for 7
Lógicamente nesse segundo caso ele vai retornar mais resultados.
certo, porém não deveria trazer mais resultados, ja que estou pedindo uma soma dos valores comissionados, quando o nome do agente fosse ‘BRADESCO 0052 A SINERGIA ARAPONGAS’ então deveria trazer somente um resultado.só que ele traz um resultado para o nome
‘BRADESCO 0052 A SINERGIA ARAPONGAS’ e mais um para cada agente.nome ai é que se encontra a dúvida
Bom apesar de não ter terminado o Relatório ainda as questões acima ficaram assim a primeira questão foi resolvida com sub relatórios, um para cada query, ja a questão do firebird ficou resolvida desta maneira:
SELECT
sum(CONTRATO."VALORCOMISSIONADO") AS CONTRATO_VALORCOMISSIONADO,
META."VALOR" AS META_VALOR,
AGENTE."CODIGO" AS AGENTE_CODIGO,
AGENTE."NOME" AS AGENTE_NOME
FROM
"AGENTE" AGENTE INNER JOIN "META" META ON AGENTE."CODIGO" = META."CODAGENTE"
INNER JOIN "CONTRATO" CONTRATO ON AGENTE."CODIGO" = CONTRATO."AGENTE"
INNER JOIN "BANCOS" BANCOS ON CONTRATO."BANCO" = BANCOS."CODIGO"
INNER JOIN "FINANCEIRA" FINANCEIRA ON BANCOS."FINANCEIRA" = FINANCEIRA."CODIGO"
INNER JOIN "TIPO" TIPO ON BANCOS."TIPO" = TIPO."CODIGO"
WHERE
AGENTE."ATIVO" LIKE 'S'
AND AGENTE."TIPOAGENTE" LIKE '5'
AND FINANCEIRA."CODIGO" LIKE '1'
AND TIPO."GRUPO" LIKE '4'
AND CONTRATO."AGENTESECUNDARIO" NOT LIKE '22'
AND ((CONTRATO."STATUSAP" LIKE '1') or (CONTRATO."STATUSAP" LIKE '2') or (CONTRATO."STATUSAP" LIKE '4') or (CONTRATO."STATUSAP" LIKE '5') or (CONTRATO."STATUSAP" LIKE '7'))
AND AGENTE."CODIGO" = $P{sub1}
GROUP BY
META."VALOR",
AGENTE."NOME",
AGENTE."CODIGO"