Datenbanktheorie » MSSQL 02 CREATE TABLES
/* <-- 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)
);