Frage : Sql-Nachschlagentabelle mit den mehrfachen Hinweisen basiert auf Updatedatumfeld

Hallo,

Trying, zum meines Kopfes um die beste Annäherung mit diesem einzuwickeln.  Eine Tabelle spürt den Status eines Belegschaftsmitgliedes mit auf, was Code sie vorwählen.  Sie notiert das Datum und Zeit, in der sie ihre selection.

Another Tabelle bilden, speichert die Beschreibung der vorhandenen Codes.  Sie speichert auch das Datum, in dem dieser Code modernisiert war (der auf sie auch zutreffen kann verursachend).  So konnten Sie den gleichen Code wiederholen möglicherweise lassen, aber mit verschiedenem dates.

So, was ich tun möchte, ist, einen Report zu produzieren, der über den korrekten Code für das Datum berichtet, die Vorwähler wurde gebildet.  Im angebrachten Beispiel, bedeutete 20. August-Code 2, dass sie auf Bruch waren.  Aber 23. August, hat Code 2 an zum Telefon geändert.  So für alle Tage zwischen dem 20. August und dem 22. August sollte er über ihn wie auf Bruch berichten.  Nach dem 23. sollte er über es wie am Telefon berichten.  

How würde dieses in SQL konstruiert? (Ich schließe meinen schwachen und feable Versuch ein, da er nicht Arbeit tut),
1:
2:
3:
SELECT *
  Vom CodeLogging Maschinenbordbuch
 INNER CodeReference Hinweis AUF sich ANSCHLIESSEN log.code = ref.code UND Maschinenbordbuch. >= ref.LastUpdate datieren
Attachments:
Beispiel-Tabellen und erwartetes output

Antwort : Sql-Nachschlagentabelle mit den mehrfachen Hinweisen basiert auf Updatedatumfeld

Sie konnten einen Tageskalender herstellen und Ihre Tabellen zu ihm verbinden
FUNKTION [dbo] VERURSACHEN. [DAY_CALENDAR]
(
      @StartDate TDATETIME,
      @EndDate TDATETIME
)
RÜCKKEHR
      @DYCALENDAR TABELLE
(
      StartDate DATUM/UHRZEIT,
      EndDate DATUM/UHRZEIT,
      OnDay DATUM/UHRZEIT
)
WIE
ANFANGEN
      @VARSTARTTIME TDATETIME, @VARENDTIME TDATETIME ERKLÄREN
      
      @varStartTime = DATEADD (DD, 0, DATEDIFF (DD, 0, @StartDate) einstellen)
      
      während @varStartTime <>      anfangen
            @varEndTime = DATEADD (DD, 1, @varStartTime) einstellen --beenden Zeit
            @varRes = @varStartTime einstellen
            
            in @DYCALENDAR einsetzen
            Werte (@varStartTime, @varEndTime, @varStartTime)
            
            @varStartTime = @varEndTime einstellen
      Ende            
      
      RÜCKKEHR
ENDE
       
Frage
VORWÄHLEN *
Vom CodeLogging Maschinenbordbuch
INNER CodeReference Hinweis AUF ANSCHLIESSEN log.code = ref.code
INNER DAY_CALENDAR (08/01/2010', „08/31/2010“) LOGDAYS AN VERBINDEN
  (log.date >= LOGDAYS.StartDate und Maschinenbordbuch. Datum <� LOGDAYS="">
Weitere Lösungen  
 
programming4us programming4us