1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Zeiträume

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von wgress, 18 November 2011.

  1. wgress

    wgress Neuer Benutzer

    Hallo zusammen!

    An diesem Problem beisse ich mir nun schon seit Tagen die Zähne aus:

    Ich habe eine Tabelle (ProjectMembers), die folgende Spalten enthält:
    -BenutzerID
    -ProjektID
    -Verrechnungssatz

    BenutzerID und ProjektID sind verlinkt mit entsprechenden ID-Feldern in einer Benutzertabelle und einer Projekttabelle (m:n - Beziehung)

    Die Spalte Verrechnungssatz gibt an, mit welchem Verrechnungssatz ein Benutzer X im Projekt Y abgerechnet werden soll.

    Nun sollen die Verrechnungsätze zeitlich versioniert werden.

    Meine Idee: die Tabelle ProjectMembers erhält ein zusätzliches Datumsfeld 'GültigSeit'

    Für Abrechungsvorgänge wäre diese Tabelle aber so nicht zu gebrauchen. Bislang hätte es gereicht auf eine ProjektID zu filtern um alle Verrechnungssätze für die Projektbeteiligten zu ermitteln. In Zukunft soll zusätzlich auf ein Datum gefiltert werden können.
    Also: Welcher Verrechnungssatz waren im Projekt X am Datum Y für den Benutzer Z gültig.

    Hierzu wäre es notwendig die um 'GültigSeit' erweiterte Tabelle wie folgt zu transformieren:

    -BenutzerID
    -ProjektID
    -Verrechnungssatz
    -DatumSeit
    -DatumBis

    Gibt es kein Folgedatum für eine User/ProjeltID Kombination, so kann DatumBis meinetwegen NULL werden. Oder einen Wert irgendwann in der Zukunft annehmen.

    Wenn es gelingt die Ausgangstabelle entsprechend zu transformieren, so könnten nachfolgende Abfragen auf diese Tabelle einfach mit der 'BETWEEN'-Anweisung arbeiten.

    Aber wie sieht so eine Transformation aus?
     
  2. ukulele

    ukulele Datenbank-Guru

    Was verstehst du unter "Transformation"?
    Du musst die Tabelle erweiteren um die beiden Spalten, entweder per TSQL oder im SQL Studio. Dann musst du deinen Programcode, bzw. die Abfragen auf die Datenbank entsprechend anpassen. Prinzipiell sollte das kein Problem sein, sofern du Zugriff auf den SQL Code in der Aplikation hast.
     
  3. wgress

    wgress Neuer Benutzer

    Also eigentlich hatte ich die Hoffnung, daß diese 'Transformation' (sorry für den irreführenden Ausdruck) mit einer mehr oder minder simplen SQL-Abfrage geht ohne daß ich im Programmcode meiner Applikation aufwendige Schleifen schreiben muß oder mit temporären Tabellen hantieren muß.
    Gesucht ist also der Code für eine Sicht im SQL-Server die einfach die Ergebnismenge enthält.
     
  4. ukulele

    ukulele Datenbank-Guru

    Nungut, ich nahm an du wolltest die Datenbank anpassen. Natürlich kann man auch nur eine Sicht erstellen. Voraussetzung ist allerdings, das alle Daten irgendwo vorhanden sind! Deine Beschreibung klang so, als ob deine Tabellen bisher noch nicht die Informationen für GültigSeit und Gültigbis beinhaltet. Wenn dem doch so ist, müsstest du dir mal die Mühe machen und alle benötigten Tabellen und Felder zusammen suchen.
     
  5. Ritschi

    Ritschi Aktiver Benutzer

    Hi,
    @wgress: Hast Du diese Spalten jetzt in Deiner Tabelle oder suchst Du nach einem SQL Code um diese Spalten Deiner Tabelle hinzuzufügen?
     

Diese Seite empfehlen