Olá…
Tenho o seguinte problema…
Suponhamos (Somente um exemplo, mas que encaixa no meu problema) que tenho uma tabela…
TABELA
Nr Data
1 10-10-2011
2 10-10-2011
3 11-10-2011
4 10-10-2011
O que presciso… é pegar o intervalo de nr por data… e não pode haver intersecção entre os intervalos…
o resultado final tem que ficar assim
Data Nr-inicio Nr-Fim
10-10-2011 1 2
10-10-2011 4 4
11-10-2011 3 3
então formulei um select… mas ele não faz os intervalos direito…não sei o que tá errado…
ele retorna assim
Data Nr-inicio Nr-Fim
10-10-2011 1 4
11-10-2011 3 3
meu select ficou assim
SELECT MIN(NR) AS NRINICIO,
MAX(NR) AS NRFIM,
DATA
FROM TABELA
GROUP BY DATA
ORDER BY DATA
Lendo seu problema, não me vem nada na cabeça para resolver com um select, acho que você pode fazer um procedimento e montar uma tabela temporária do jeito que você quer…
Creio que a solução seria a mesma para localizar se há ou não intervalos entre duas sequencias de números
Cara, tenta isto aqui:
select dt, min(numero), max(numero)
from
(
select
t1.*,
(select min( numero ) from tabela t2 where t2.numero > t1.numero and t2.dt != t1.dt) ultimo
from
tabela t1
)
group by
dt, ultimo
order by
dt
Beleza…não sei como…kkkkkkkkkkk
.mas esse seu select funcionou …crei uma tabelinha e simulei o meu problema…e funcionou…
agora vou tentar passar isso para meu select real… só quero ver… mas vamos lá…obrigado… depois eu posto aqui
se consegui ou não…
[quote=leopoldof]Beleza…não sei como…kkkkkkkkkkk
.mas esse seu select funcionou …crei uma tabelinha e simulei o meu problema…e funcionou…
agora vou tentar passar isso para meu select real… só quero ver… mas vamos lá…obrigado… depois eu posto aqui
se consegui ou não…[/quote]
Eu não sou muito bom para explicar select, mas basicamente é o seguinte:
Seu grupo é feito de números na mesma data, num intervalo contíguo de números…
Aquele subselect pega o primeiro número ( “min( numero )” ) a partir do registro atual com uma data diferente.
Esse primeiro número será igual para todos os números de um determinado grupo.
No fim é só agrupar por data e por esse primeiro número do próximo grupo (que na pressa coloquei como ultimo no select, um péssimo alias)
Enfim… acho que para entender o melhor é rodar em partes e ver o que está acontecendo.
KKKK…
Muito bom…
Rodou certinho aqui a sua idéia… passei o maior tempão pesquisando e tentando montar um select…
Usando o Having… modificando o group by… usando agregação…e nada…
seguindo a sua idéia… funcionou certinho a separação…
agora só vou ajeitar os totalizadores do select, pois tenho dentro do select dois sub-selects…
Mas creio se se eu seguir a mesma idéia do from… vai funcionar também…
Obrigado…