Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JoãodeCastro

Probleminha bobo

Recommended Posts

Caros srs., por favor me ajudem. Para vocês esse problema deve ser simples.

 

Meu problema é o seguinte. Eu tenho uma tabela com uma chave, um nº de pasta, o nome de diversos departamentos por onde esta pasta passou e uma data em que ela foi para lá. O que eu preciso? Fazer um relatório de todas as pastas por nº e onde foi o último departamento em que ela passou (onde provavelmente ela está agora).

 

 

Eu já tentei usar max(data), mas ele me retorna vários departamentos em um processo. Isso não me serve. Eu preciso apenas do último departamento.

 

Atenciosamente,

 

 

João de Castro

Compartilhar este post


Link para o post
Compartilhar em outros sites

João de Castro ,

pq não agrupa por departamento e por pasta dando um max(data)

Tenta postar um exemplo do select para ver se ajudamos.

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perdão, srs., é o meu primeiro dia aqui. Eu ainda não sei todas as formalidades para pedir ajuda. Mas estou aprendendo.

Eu estou fazendo dessa forma

 

SELECT TOP 100 PERCENT ANO_IDOC, CODIGO_IDOC, SEQ_IDOC, MAX(DATA_SAIDA_IDOC) AS data, REQUISITANTE_IDOC

FROM dbo.DOC_DOCUMENTOS_ITENS

GROUP BY ANO_IDOC, CODIGO_IDOC, REQUISITANTE_IDOC

ORDER BY ANO_IDOC, CODIGO_IDOC, MAX(SEQ_IDOC)

 

Sendo os 3 primeiros, a chave que me dá o nº da pasta, o data_saida_idoc, a data e requisitante_idoc o departarmento por onde a pasta passou.

Como eu já falei, ele me dá mais de um requisitante_idoc, e eu preciso somente do último de cada pasta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perdão, srs., é o meu primeiro dia aqui. Eu ainda não sei todas as formalidades para pedir ajuda. Mas estou aprendendo.

Eu estou fazendo dessa forma

 

SELECT TOP 100 PERCENT ANO_IDOC, CODIGO_IDOC, SEQ_IDOC, MAX(DATA_SAIDA_IDOC) AS data, REQUISITANTE_IDOC

FROM dbo.DOC_DOCUMENTOS_ITENS

GROUP BY ANO_IDOC, CODIGO_IDOC, REQUISITANTE_IDOC

ORDER BY ANO_IDOC, CODIGO_IDOC, MAX(SEQ_IDOC)

 

Sendo os 3 primeiros, a chave que me dá o nº da pasta, o data_saida_idoc, a data e requisitante_idoc o departarmento por onde a pasta passou.

Como eu já falei, ele me dá mais de um requisitante_idoc, e eu preciso somente do último de cada pasta.

 

 

Opa, agora que vi seu número de posts.

Bem vindo! e vamos ao seu problema.

 

Tente dar o máximo de dados possíveis sobre o seu problema, como o select (que você jah passou), o resultado obtdo e o esperado, e NÃO se esqueça, a VERSÃO do SQL. Isso ajuda e muito, pois há funções que existem somente na versão 2008.

 

SELECT     TOP 100 PERCENT 
ANO_IDOC
, CODIGO_IDOC
, SEQ_IDOC
, MAX(DATA_SAIDA_IDOC) AS data
, REQUISITANTE_IDOC
FROM         dbo.DOC_DOCUMENTOS_ITENS
GROUP BY ANO_IDOC, CODIGO_IDOC, REQUISITANTE_IDOC
ORDER BY ANO_IDOC, CODIGO_IDOC, MAX(SEQ_IDOC)

 

Obrigado!!!

 

Júnior

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro, tudo bem...

A versão que eu uso é o SQL Server 2000 (admito, precisamos renovar, mas o nosso orçamento é baixo... se o sr. visse o servidor que roda isso?).

Com o select que eu já passei eu consegui isso:

 

ANO_IDOC - CODIGO_IDOC - SEQ_IDOC - Data - REQUISITANTE_IDOC

1998 - 1 - 1 - 15/9/1998 - Secretaria Geral

1998 - 1 - 7 - 19/10/1998 - Planejamento

1998 - 1 - 32 - 25/08/1999 - Presidencia

1998 - 1 - 84 - 26/04/2002 - Div. Financeira

 

 

Qual o Resultado que eu espero obter:

 

ANO_IDOC - CODIGO_IDOC - SEQ_IDOC - Data - REQUISITANTE_IDOC

1998 - 1 - 84 - 26/04/2002 - Div. Financeira

 

Apenas essa linha que vem por último, que é onde a pasta está no momento. O que eu quero é saber quais pastas estão em cada divisão:

ano_idoc - Codigo_idoc - Requisitante_idoc

pasta 1998 - 1 - Div. Financeira

pasta 2003 - 2 - Planejamento

pasta 2010 - 55 - Presidência

 

 

 

Muito obrigado, srs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez não seja a melhor solução. Mas acho que funciona:

 

SELECT
di.ANO_IDOC
, di.CODIGO_IDOC
, di.REQUISITANTE_IDOC
FROM dbo.DOC_DOCUMENTOS_ITENS di
inner join (SELECT CODIGO_IDOC, MAX(SEQ_IDOC) seq_idoc
		FROM dbo.DOC_DOCUMENTOS_ITENS
		GROUP BY CODIGO_IDOC) diMax
on di.codigo_idoc = diMax.codigo_idoc
and di.seq_idoc = diMax.seq_idoc
order by di.ANO_IDOC, di.CODIGO_IDOC, di.REQUISITANTE_IDOC

 

Seja bem vindo ao fórum e lembre sempre de voltar e dizer se funcionou ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro, tudo bem...

A versão que eu uso é o SQL Server 2000 (admito, precisamos renovar, mas o nosso orçamento é baixo... se o sr. visse o servidor que roda isso?).

.....

Muito obrigado, srs.

 

Não se preocupe em renovação, apesar de ser um produto já descontinuado pela MS, eu também atendo a clientes que possuem esta versão e pasmem, a versão 7.5

 

Sr. Fabio, muito obrigado por sua ajuda... com uma ligeira alteração, funcionou bem...

Obrigado pelo feedback, mas qual alteração que você fez?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.