Pessoal, tenho uma parte do meu método onde consulto no BD um resultado… só que este resultado pode vir com mais de uma linha.
O caso é que as linhas que retornam, vem identicas só mudando um campo, pois é o campo fonte (origem do dado inserido) e não sei uma solução para caso ele tenha mais de um resultado para a mesma consulta, ele juntar no campo do excel gerado com as duas informações no mesmo campo.
criarExcel.CriarPlanilhaColetiva(dispositivo, codTecnologia, fonte); // AQUI ENVIA PARA A CLASSE QUE GERA O EXCEL
}
} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionManager.fecharConexao(conn, null, ps);
}[/code]
Você obtém os dados, através do DAO, só não sabe o que fazer com eles. Isso não tem relação com o DAO, mas com a lógica a ser aplicada na construção do relatório.
isso… é que não ficou tão claro minha dúvida… pois disso dúvida de lógica COM o Dao e não NO DAO, rsrs… mas alterei o título…
É assim, geralmente a consulta gera duas linhas, só com esse campo fonte diferente, ai queria saber como faço para caso aconteça isso, eu coloco os dois resultados do campo fonte no mesmo campo do excel.
SELECT c.*, CASE WHEN a.data > b.data THEN a.data ELSE b.data END AS data
FROM SIMCardDispositivo c, Dispositivo b, SIMCard a
WHERE c.x = a.x AND c.y = b.y
Nunca usei esse tipo de lógica em BD (com condição else) mas é quase isso… só não sei como fazer esse bendito SELECT
================================
Eu fiz assim:
[code]
SELECT SIMCardDispositivo.*, CASE WHEN SIMCard.dataAlteracao > Dispositivo.dataAlteracao THEN SIMCard.dataAlteracao ELSE Dispositivo.dataAlteracao END AS dataAlt,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Processamento.CodigoFonteDados) AS Fonte,
FROM SIMCard LEFT JOIN SIMCardDispositivo ON SIMCardDispositivo.SIMCard_Numero = SIMCard.Numero
LEFT JOIN Dispositivo ON Dispositivo.Numero = SIMCardDispositivo.Dispositivo_Numero
INNER JOIN Linha ON Linha.Numero = SIMCard.NumeroLinha
LEFT JOIN Processamento ON (Processamento.Codigo = SIMCard.CodigoProcessamento OR Processamento.Codigo = Dispositivo.CodigoProcessamento)
WHERE SIMCard.Numero = 89550232280000892281 [/code]
Só que eu tenho esse campo chamado “Fonte” Que faço um select… E este campo possui dois valores distintos… e mesmo usando essa validação das datas ele traz dois valores…
Era melhor colocar essa condição da data no WHERE… e não no SELECT…
É por causa desse campo que to tomando na cabeça… tenho que pegar o último registro inserido, e trazer a fonte dele e consequentemente a data que foi inserido…
Consegui juntando a fonte na mesma linha com o que vc tinha me passado…
string_agg((SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Processamento.CodigoFonteDados), '/' ORDER BY CodigoFonteDados) AS Fonte, ...
CASE WHEN SIMCard.dataAlteracao > Dispositivo.dataAlteracao THEN SIMCard.dataAlteracao ELSE Dispositivo.dataAlteracao END AS dataAlt