/* <-- zurück zu Zeitintervalle in SQL verarbeiten */ /* SQL Server: Tabellen anlegen, die benötigt werden */ /* Tabelle für Tage anlegen */ IF EXISTS (SELECT * FROM sys.tables WHERE name = 'zeitintervall_tag') DROP TABLE zeitintervall_tag; CREATE TABLE zeitintervall_tag ( tag DATETIME NOT NULL, PRIMARY KEY (tag) ); /* Tabelle für sortierte Zeitintervalle */ IF EXISTS (SELECT * FROM sys.tables WHERE name = 'zeitintervall_sortiert') DROP TABLE zeitintervall_sortiert; CREATE TABLE zeitintervall_sortiert ( row_id INT NOT NULL IDENTITY(1,1), fallnr INT NOT NULL, beginn DATETIME NOT NULL, ende DATETIME NOT NULL, next_beginn DATETIME, PRIMARY KEY (fallnr, beginn, ende), UNIQUE (row_id) ); /* Tabelle für Gesamt-Intervalle und Lücken zwischen diesen */ IF EXISTS (SELECT * FROM sys.tables WHERE name = 'zeitintervall_gesamt_und_luecken') DROP TABLE zeitintervall_gesamt_und_luecken; CREATE TABLE zeitintervall_gesamt_und_luecken ( fallnr INT NOT NULL, beginn DATETIME NOT NULL, beginntag DATETIME, ende DATETIME NOT NULL, endetag DATETIME, luecke VARCHAR(1) NOT NULL, faktor INT NOT NULL, PRIMARY KEY (fallnr, beginn, ende) ); /* Tabelle für Ergebnis */ IF EXISTS (SELECT * FROM sys.tables WHERE name = 'zeitintervall_ergebnis') DROP TABLE zeitintervall_ergebnis; CREATE TABLE zeitintervall_ergebnis ( fallnr INT NOT NULL, tag DATETIME NOT NULL, minuten INT, PRIMARY KEY (fallnr, tag) );