Bonjour, je pense avoir fait le tour du pb avec Med et Bruno. et donc voici:
WITH cte as ( SELECT *, row_number () over (order by region, datdeb ) as d FROM brtt as t Where not exists (select * from brtt tt where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d FROM brtt as t Where not exists (select * from brtt tt where t.datdeb-1 = tt.datfin and tt.region = t.region) ) select min (t.datdeb), max (t.datfin), t.region from cte as t group by t.d, t.region
Cordialement Med, Bruno, Pascale Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit : > Ce n'est pas un extrait de ma base de données. > J'ai monté l'exemple en rédigeant le mail. > > Pour l'exemple, on remplace > 01/10/2007 30/09/2007 IDF Lille > Par > 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
>>> >>> DEBUT FIN REGION VILLE >>> 01/01/2000 30/04/2002 IDF Paris >>> 01/05/2002 14/02/2003 IDF Montreuil >>> 15/02/2003 21/10/2004 IDF Neuilly >>> 22/10/2004 15/01/2005 BRE Rennes >>> 16/01/2005 18/06/2006 BRE Brest >>> 19/06/2006 30/09/2007 NRD Lille >> >> Ligne fausse : date début > date fin. >> >>> 01/10/2007 30/09/2007 IDF Lille
Bonjour,
je pense avoir fait le tour du pb avec Med et Bruno.
et donc voici:
WITH cte as
(
SELECT *, row_number () over (order by region, datdeb ) as d
FROM brtt as t
Where
not exists
(select * from brtt tt
where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d
FROM brtt as t
Where
not exists
(select * from brtt tt
where t.datdeb-1 = tt.datfin and tt.region = t.region)
)
select min (t.datdeb), max (t.datfin), t.region
from cte as t
group by t.d, t.region
Cordialement
Med, Bruno, Pascale
Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit :
> Ce n'est pas un extrait de ma base de données.
> J'ai monté l'exemple en rédigeant le mail.
>
> Pour l'exemple, on remplace
> 01/10/2007 30/09/2007 IDF Lille
> Par
> 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
>>>
>>> DEBUT FIN REGION VILLE
>>> 01/01/2000 30/04/2002 IDF Paris
>>> 01/05/2002 14/02/2003 IDF Montreuil
>>> 15/02/2003 21/10/2004 IDF Neuilly
>>> 22/10/2004 15/01/2005 BRE Rennes
>>> 16/01/2005 18/06/2006 BRE Brest
>>> 19/06/2006 30/09/2007 NRD Lille
>>
>> Ligne fausse : date début > date fin.
>>
>>> 01/10/2007 30/09/2007 IDF Lille
Bonjour, je pense avoir fait le tour du pb avec Med et Bruno. et donc voici:
WITH cte as ( SELECT *, row_number () over (order by region, datdeb ) as d FROM brtt as t Where not exists (select * from brtt tt where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d FROM brtt as t Where not exists (select * from brtt tt where t.datdeb-1 = tt.datfin and tt.region = t.region) ) select min (t.datdeb), max (t.datfin), t.region from cte as t group by t.d, t.region
Cordialement Med, Bruno, Pascale Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit : > Ce n'est pas un extrait de ma base de données. > J'ai monté l'exemple en rédigeant le mail. > > Pour l'exemple, on remplace > 01/10/2007 30/09/2007 IDF Lille > Par > 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
>>> >>> DEBUT FIN REGION VILLE >>> 01/01/2000 30/04/2002 IDF Paris >>> 01/05/2002 14/02/2003 IDF Montreuil >>> 15/02/2003 21/10/2004 IDF Neuilly >>> 22/10/2004 15/01/2005 BRE Rennes >>> 16/01/2005 18/06/2006 BRE Brest >>> 19/06/2006 30/09/2007 NRD Lille >> >> Ligne fausse : date début > date fin. >> >>> 01/10/2007 30/09/2007 IDF Lille
Michel__D
Bonjour,
Med a écrit :
Bonjour, je pense avoir fait le tour du pb avec Med et Bruno.
Peut-être, mais cela reste incohérent et donc ton truc ne marchera plus lorsque : Abs ( datfin - datdeb ) <> 1
et donc voici:
WITH cte as ( SELECT *, row_number () over (order by region, datdeb ) as d FROM brtt as t Where not exists (select * from brtt tt where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d FROM brtt as t Where not exists (select * from brtt tt where t.datdeb-1 = tt.datfin and tt.region = t.region) ) select min (t.datdeb), max (t.datfin), t.region from cte as t group by t.d, t.region
Cordialement Med, Bruno, Pascale Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit :
Ce n'est pas un extrait de ma base de données. J'ai monté l'exemple en rédigeant le mail.
Pour l'exemple, on remplace 01/10/2007 30/09/2007 IDF Lille Par 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
DEBUT FIN REGION VILLE 01/01/2000 30/04/2002 IDF Paris 01/05/2002 14/02/2003 IDF Montreuil 15/02/2003 21/10/2004 IDF Neuilly 22/10/2004 15/01/2005 BRE Rennes 16/01/2005 18/06/2006 BRE Brest 19/06/2006 30/09/2007 NRD Lille
>>
Ligne fausse : date début > date fin.
01/10/2007 30/09/2007 IDF Lille
Bonjour,
Med a écrit :
Bonjour,
je pense avoir fait le tour du pb avec Med et Bruno.
Peut-être, mais cela reste incohérent et donc ton truc ne marchera plus lorsque :
Abs ( datfin - datdeb ) <> 1
et donc voici:
WITH cte as
(
SELECT *, row_number () over (order by region, datdeb ) as d
FROM brtt as t
Where
not exists
(select * from brtt tt
where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d
FROM brtt as t
Where
not exists
(select * from brtt tt
where t.datdeb-1 = tt.datfin and tt.region = t.region)
)
select min (t.datdeb), max (t.datfin), t.region
from cte as t
group by t.d, t.region
Cordialement
Med, Bruno, Pascale
Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit :
Ce n'est pas un extrait de ma base de données.
J'ai monté l'exemple en rédigeant le mail.
Pour l'exemple, on remplace
01/10/2007 30/09/2007 IDF Lille
Par
01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
DEBUT FIN REGION VILLE
01/01/2000 30/04/2002 IDF Paris
01/05/2002 14/02/2003 IDF Montreuil
15/02/2003 21/10/2004 IDF Neuilly
22/10/2004 15/01/2005 BRE Rennes
16/01/2005 18/06/2006 BRE Brest
19/06/2006 30/09/2007 NRD Lille
Bonjour, je pense avoir fait le tour du pb avec Med et Bruno.
Peut-être, mais cela reste incohérent et donc ton truc ne marchera plus lorsque : Abs ( datfin - datdeb ) <> 1
et donc voici:
WITH cte as ( SELECT *, row_number () over (order by region, datdeb ) as d FROM brtt as t Where not exists (select * from brtt tt where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d FROM brtt as t Where not exists (select * from brtt tt where t.datdeb-1 = tt.datfin and tt.region = t.region) ) select min (t.datdeb), max (t.datfin), t.region from cte as t group by t.d, t.region
Cordialement Med, Bruno, Pascale Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit :
Ce n'est pas un extrait de ma base de données. J'ai monté l'exemple en rédigeant le mail.
Pour l'exemple, on remplace 01/10/2007 30/09/2007 IDF Lille Par 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
DEBUT FIN REGION VILLE 01/01/2000 30/04/2002 IDF Paris 01/05/2002 14/02/2003 IDF Montreuil 15/02/2003 21/10/2004 IDF Neuilly 22/10/2004 15/01/2005 BRE Rennes 16/01/2005 18/06/2006 BRE Brest 19/06/2006 30/09/2007 NRD Lille
>>
Ligne fausse : date début > date fin.
01/10/2007 30/09/2007 IDF Lille
Synopsis
Merci beaucoup.
Après quelques corrections dans mes données, j'ai testé votre solution. Elle fonctionne parfaitement.
Elle prend en compte aussi les ruptures de périodes.
Cordialement,
"Med, Bruno, Pascale - Solid Quality Fran" <Med, Bruno, Pascale - Solid Quality a écrit dans le message de news:
Bonjour, je pense avoir fait le tour du pb avec Med et Bruno. et donc voici:
WITH cte as ( SELECT *, row_number () over (order by region, datdeb ) as d FROM brtt as t Where not exists (select * from brtt tt where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d FROM brtt as t Where not exists (select * from brtt tt where t.datdeb-1 = tt.datfin and tt.region = t.region) ) select min (t.datdeb), max (t.datfin), t.region from cte as t group by t.d, t.region
Cordialement Med, Bruno, Pascale Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit : > Ce n'est pas un extrait de ma base de données. > J'ai monté l'exemple en rédigeant le mail. > > Pour l'exemple, on remplace > 01/10/2007 30/09/2007 IDF Lille > Par > 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
>>> >>> DEBUT FIN REGION VILLE >>> 01/01/2000 30/04/2002 IDF Paris >>> 01/05/2002 14/02/2003 IDF Montreuil >>> 15/02/2003 21/10/2004 IDF Neuilly >>> 22/10/2004 15/01/2005 BRE Rennes >>> 16/01/2005 18/06/2006 BRE Brest >>> 19/06/2006 30/09/2007 NRD Lille >> >> Ligne fausse : date début > date fin. >> >>> 01/10/2007 30/09/2007 IDF Lille
Merci beaucoup.
Après quelques corrections dans mes données, j'ai testé votre solution.
Elle fonctionne parfaitement.
Elle prend en compte aussi les ruptures de périodes.
Cordialement,
"Med, Bruno, Pascale - Solid Quality Fran" <Med, Bruno, Pascale - Solid
Quality Fran@discussions.microsoft.com> a écrit dans le message de news:
74C210DB-C351-4320-9BF5-C7FC8531045F@microsoft.com...
Bonjour,
je pense avoir fait le tour du pb avec Med et Bruno.
et donc voici:
WITH cte as
(
SELECT *, row_number () over (order by region, datdeb ) as d
FROM brtt as t
Where
not exists
(select * from brtt tt
where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d
FROM brtt as t
Where
not exists
(select * from brtt tt
where t.datdeb-1 = tt.datfin and tt.region = t.region)
)
select min (t.datdeb), max (t.datfin), t.region
from cte as t
group by t.d, t.region
Cordialement
Med, Bruno, Pascale
Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit :
> Ce n'est pas un extrait de ma base de données.
> J'ai monté l'exemple en rédigeant le mail.
>
> Pour l'exemple, on remplace
> 01/10/2007 30/09/2007 IDF Lille
> Par
> 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
>>>
>>> DEBUT FIN REGION VILLE
>>> 01/01/2000 30/04/2002 IDF Paris
>>> 01/05/2002 14/02/2003 IDF Montreuil
>>> 15/02/2003 21/10/2004 IDF Neuilly
>>> 22/10/2004 15/01/2005 BRE Rennes
>>> 16/01/2005 18/06/2006 BRE Brest
>>> 19/06/2006 30/09/2007 NRD Lille
>>
>> Ligne fausse : date début > date fin.
>>
>>> 01/10/2007 30/09/2007 IDF Lille
Après quelques corrections dans mes données, j'ai testé votre solution. Elle fonctionne parfaitement.
Elle prend en compte aussi les ruptures de périodes.
Cordialement,
"Med, Bruno, Pascale - Solid Quality Fran" <Med, Bruno, Pascale - Solid Quality a écrit dans le message de news:
Bonjour, je pense avoir fait le tour du pb avec Med et Bruno. et donc voici:
WITH cte as ( SELECT *, row_number () over (order by region, datdeb ) as d FROM brtt as t Where not exists (select * from brtt tt where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d FROM brtt as t Where not exists (select * from brtt tt where t.datdeb-1 = tt.datfin and tt.region = t.region) ) select min (t.datdeb), max (t.datfin), t.region from cte as t group by t.d, t.region
Cordialement Med, Bruno, Pascale Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit : > Ce n'est pas un extrait de ma base de données. > J'ai monté l'exemple en rédigeant le mail. > > Pour l'exemple, on remplace > 01/10/2007 30/09/2007 IDF Lille > Par > 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
>>> >>> DEBUT FIN REGION VILLE >>> 01/01/2000 30/04/2002 IDF Paris >>> 01/05/2002 14/02/2003 IDF Montreuil >>> 15/02/2003 21/10/2004 IDF Neuilly >>> 22/10/2004 15/01/2005 BRE Rennes >>> 16/01/2005 18/06/2006 BRE Brest >>> 19/06/2006 30/09/2007 NRD Lille >> >> Ligne fausse : date début > date fin. >> >>> 01/10/2007 30/09/2007 IDF Lille
Synopsis
J'ai déposé le script SQL et la solution : http://cjoint.com/?eBprLQPuDd
"Synopsis" a écrit dans le message de news: 49f39d39$0$14423$
Merci beaucoup.
Après quelques corrections dans mes données, j'ai testé votre solution. Elle fonctionne parfaitement.
Elle prend en compte aussi les ruptures de périodes.
Cordialement,
"Med, Bruno, Pascale - Solid Quality Fran" <Med, Bruno, Pascale - Solid Quality a écrit dans le message de news:
Bonjour, je pense avoir fait le tour du pb avec Med et Bruno. et donc voici:
WITH cte as ( SELECT *, row_number () over (order by region, datdeb ) as d FROM brtt as t Where not exists (select * from brtt tt where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d FROM brtt as t Where not exists (select * from brtt tt where t.datdeb-1 = tt.datfin and tt.region = t.region) ) select min (t.datdeb), max (t.datfin), t.region from cte as t group by t.d, t.region
Cordialement Med, Bruno, Pascale Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit : > Ce n'est pas un extrait de ma base de données. > J'ai monté l'exemple en rédigeant le mail. > > Pour l'exemple, on remplace > 01/10/2007 30/09/2007 IDF Lille > Par > 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
>>> >>> DEBUT FIN REGION VILLE >>> 01/01/2000 30/04/2002 IDF Paris >>> 01/05/2002 14/02/2003 IDF Montreuil >>> 15/02/2003 21/10/2004 IDF Neuilly >>> 22/10/2004 15/01/2005 BRE Rennes >>> 16/01/2005 18/06/2006 BRE Brest >>> 19/06/2006 30/09/2007 NRD Lille >> >> Ligne fausse : date début > date fin. >> >>> 01/10/2007 30/09/2007 IDF Lille
J'ai déposé le script SQL et la solution : http://cjoint.com/?eBprLQPuDd
"Synopsis" <synopsis@nospam.fr> a écrit dans le message de news:
49f39d39$0$14423$426a34cc@news.free.fr...
Merci beaucoup.
Après quelques corrections dans mes données, j'ai testé votre solution.
Elle fonctionne parfaitement.
Elle prend en compte aussi les ruptures de périodes.
Cordialement,
"Med, Bruno, Pascale - Solid Quality Fran" <Med, Bruno, Pascale - Solid
Quality Fran@discussions.microsoft.com> a écrit dans le message de news:
74C210DB-C351-4320-9BF5-C7FC8531045F@microsoft.com...
Bonjour,
je pense avoir fait le tour du pb avec Med et Bruno.
et donc voici:
WITH cte as
(
SELECT *, row_number () over (order by region, datdeb ) as d
FROM brtt as t
Where
not exists
(select * from brtt tt
where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d
FROM brtt as t
Where
not exists
(select * from brtt tt
where t.datdeb-1 = tt.datfin and tt.region = t.region)
)
select min (t.datdeb), max (t.datfin), t.region
from cte as t
group by t.d, t.region
Cordialement
Med, Bruno, Pascale
Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit :
> Ce n'est pas un extrait de ma base de données.
> J'ai monté l'exemple en rédigeant le mail.
>
> Pour l'exemple, on remplace
> 01/10/2007 30/09/2007 IDF Lille
> Par
> 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
>>>
>>> DEBUT FIN REGION VILLE
>>> 01/01/2000 30/04/2002 IDF Paris
>>> 01/05/2002 14/02/2003 IDF Montreuil
>>> 15/02/2003 21/10/2004 IDF Neuilly
>>> 22/10/2004 15/01/2005 BRE Rennes
>>> 16/01/2005 18/06/2006 BRE Brest
>>> 19/06/2006 30/09/2007 NRD Lille
>>
>> Ligne fausse : date début > date fin.
>>
>>> 01/10/2007 30/09/2007 IDF Lille
J'ai déposé le script SQL et la solution : http://cjoint.com/?eBprLQPuDd
"Synopsis" a écrit dans le message de news: 49f39d39$0$14423$
Merci beaucoup.
Après quelques corrections dans mes données, j'ai testé votre solution. Elle fonctionne parfaitement.
Elle prend en compte aussi les ruptures de périodes.
Cordialement,
"Med, Bruno, Pascale - Solid Quality Fran" <Med, Bruno, Pascale - Solid Quality a écrit dans le message de news:
Bonjour, je pense avoir fait le tour du pb avec Med et Bruno. et donc voici:
WITH cte as ( SELECT *, row_number () over (order by region, datdeb ) as d FROM brtt as t Where not exists (select * from brtt tt where tt.datdeb = t.datfin +1 and tt.region = t.region)
union all
SELECT *, row_number () over (order by region, datfin ) as d FROM brtt as t Where not exists (select * from brtt tt where t.datdeb-1 = tt.datfin and tt.region = t.region) ) select min (t.datdeb), max (t.datfin), t.region from cte as t group by t.d, t.region
Cordialement Med, Bruno, Pascale Solid Quality France
"Michel__D" wrote:
Bonjour,
Synopsis a écrit : > Ce n'est pas un extrait de ma base de données. > J'ai monté l'exemple en rédigeant le mail. > > Pour l'exemple, on remplace > 01/10/2007 30/09/2007 IDF Lille > Par > 01/10/2007 30/09/2007 IDF Bondy
Le problème n'est pas sur la ville, mais sur les dates
>>> >>> DEBUT FIN REGION VILLE >>> 01/01/2000 30/04/2002 IDF Paris >>> 01/05/2002 14/02/2003 IDF Montreuil >>> 15/02/2003 21/10/2004 IDF Neuilly >>> 22/10/2004 15/01/2005 BRE Rennes >>> 16/01/2005 18/06/2006 BRE Brest >>> 19/06/2006 30/09/2007 NRD Lille >> >> Ligne fausse : date début > date fin. >> >>> 01/10/2007 30/09/2007 IDF Lille