Re: Zusammenhängende Zeiträume ermitteln
- From: "Manfred Sorg (SwT Consulting GmbH)" <manfred.sorg.swt.consulting@xxxxxxxxxxxxxx>
- Date: Fri, 31 Aug 2007 06:57:52 -0000
On 30 Aug., 08:22, Thomas Schremser
<vbng01.20.tschrem...@xxxxxxxxxxxxxxx> wrote:
Leider funktioniert das nicht; weil der CTE ja über alle Datensätze geht,
Leider muss ich Dir widersprechen. Die Abfrage war noch nicht
ausgereift - sie war ja auch nur so hier hinein geklimpert, aber es
geht:
----------------------------------------------------------------------------------------------------------------------------------------
create table datentabelle (PersonID int, OrgID int, Von datetime, Bis
datetime null)
go
insert into datentabelle
select 1,1,'20070101','20070331'
union select 1,1,'20070401',null
union select 1,2,'20070301',null
union select 2,3,'20070101','20070331'
union select 2,3,'20070601',null
union select 3,4,'20070101','20070731'
union select 3,4,'20070501',null
union select 4,5,'20070101','20070731'
union select 4,5,'20070501','20070630'
select * from datentabelle
go
declare @now datetime
set @now = getdate()
;with cte as (
select personid, orgid, von, bis
from datentabelle
union all
select cte.personid, cte.orgid, cte.von, dt.bis
from cte
inner join datentabelle dt
on dt.personid=cte.personid and
dt.orgid=cte.orgid and
dt.von between cte.von and isnull(cte.bis,@now)+1 and
isnull(dt.bis,@now) > isnull(cte.bis,@now)
)
select cte.personid,cte.orgid,cte.von,
case when max(isnull(cte.bis,@now))=@now then null else
max(isnull(cte.bis,@now)) end
from cte
where not exists
(select 1
from cte c2
where c2.personid=cte.personid and c2.orgid=cte.orgid and
c2.von<cte.von and isnull(c2.bis,@now)>=isnull(cte.bis,@now))
group by cte.personid,cte.orgid,cte.von
order by cte.personid,cte.orgid,cte.von
go
drop table datentabelle
go
----------------------------------------------------------------------------------------------------------------------------------------
Viel Erfolg damit.
Gruß, Manfred
.
- References:
- RE: Zusammenhängende Zeiträume ermitteln
- From: Frank Kalis
- Re: Zusammenhängende Zeiträume ermitteln
- From: Manfred Sorg (SwT Consulting GmbH)
- RE: Zusammenhängende Zeiträume ermitteln
- Prev by Date: Re: Select mit Unterabfrage Performanceproblem
- Next by Date: Re: Automatische Vergrösserung
- Previous by thread: Re: Zusammenhängende Zeiträume ermitteln
- Next by thread: XML Schemas SSIS Importe
- Index(es):
Relevant Pages
|