Vraag : SQL de lijst van de Raadpleging met veelvoudige verwijzingen die op het gebied van de updatedatum worden gebaseerd

Hello,

Trying om mijn hoofd rond de beste benadering met dit te verpakken.  Één lijst volgt de status van een personeelslid met de code zij selecteren.  Het registreert de datum en de tijd waarin zij hun selection.

Another- lijst maken slaat de beschrijving van de beschikbare codes op.  Het slaat ook de datum op waarin die code werd bijgewerkt (die ook op het kan van toepassing zijn die worden gecre�ërd).  Zo kon u de zelfde herhaalde code potentieel hebben maar met verschillende dates.

So wat ik zou willen doen is opbrengst een rapport dat de correcte code voor de datum meldt de selectie werd gemaakt.  In het voorbeeld in bijlage, 20 betekende Code 2 van Augustus zij op onderbreking waren.  Maar tegen 23 Augustus, is code 2 aan op Telefoon veranderd.  Zo voor alle dagen tussen 20 Augustus en 22 Augustus zou het het zoals over Onderbreking moeten melden.  Na de drieëntwintigste zou het het zoals over Telefoon moeten melden.  

How zou dit geconstrueerd worden in SQL? (ik omvat mijn zwakke en feable poging aangezien het niet) werkt
" codeBody "
1:
2:
3:
SELECT *
  VAN logboek CodeLogging
 BINNEN SLUIT me aan bij CodeReference ref OP log.code = ref.code EN logboek. Dateer >= ref.LastUpdate
Attachments:
van
De Lijsten van het voorbeeld en verwachte output

Antwoord : SQL de lijst van de Raadpleging met veelvoudige verwijzingen die op het gebied van de updatedatum worden gebaseerd

U kon zich een dagenkalender tot stand brengen en bij uw lijsten aansluiten aan het
CRE�ëR FUNCTIE [dbo]. [DAY_CALENDAR]
(
      @StartDate TDATETIME,
      @EndDate TDATETIME
)
WINST
      @DYCALENDAR LIJST
(
      DATETIME van StartDate,
      DATETIME van EndDate,
      DATETIME van OnDay
)
ZOALS
BEGIN
      VERKLAAR @VARSTARTTIME TDATETIME, @VARENDTIME TDATETIME
      
      plaats @varStartTime = DATEADD (dd, 0, DATEDIFF (dd, 0, @StartDate))
      
      terwijl @varStartTime <>      begin
            plaats @varEndTime = DATEADD (DD, 1, @varStartTime) --beëindig tijd
            plaats @varRes = @varStartTime
            
            tussenvoegsel in @DYCALENDAR
            waarden (@varStartTime, @varEndTime, @varStartTime)
            
            reeks @varStartTime = @varEndTime
      eind            
      
      TERUGKEER
EIND
       
Vraag
SELECTEER *
VAN logboek CodeLogging
BINNEN SLUIT me aan bij CodeReference ref OP log.code = ref.code
BINNEN SLUIT AAN ME BIJ DAY_CALENDAR (08/01/2010', „08/31/2010“) LOGDAYS
  (log.date >= LOGDAYS.StartDate en logboek. Datum <� LOGDAYS="">
Andere oplossingen  
 
programming4us programming4us