Questione : Tabella di occhiata di SQL con i riferimenti multipli basati sul campo della data dell'aggiornamento

Ciao,

Trying per avvolgere la mia testa intorno al migliore metodo con questa.  Una tabella segue la condizione di un personale con che cosa codice selezionano.  Registra la data ed il tempo in où fanno la loro tabella di selection.

Another immagazzina la descrizione dei codici disponibili.  Inoltre immagazzina la data in où quel codice era aggiornato (che può anche applicarsi ad esso che è generato).  Così potreste potenzialmente fare lo stesso ripeterti codice ma con differente dates.

So che cosa vorrei fare è di produrre un rapporto che segnala il codice corretto per la data la selezione è stato fatto.  Nell'esempio allegato, il codice 2 del 20 agosto ha significato che erano sulla rottura.  Ma il 23 agosto, il codice 2 è cambiato sul telefono.  Così per tutti i giorni fra il 20 agosto ed il 22 agosto dovrebbe segnalarlo come sulla rottura.  Dopo il ventitreesimo dovrebbe segnalarlo come sul telefono.  il

How questo sarebbe costruito nello SQL? (Comprendo il mio tentativo debole e feable poichè non fa lavoro)
class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
>SELECT notpretty " del class= " del id= " codeSnippet962739 del
= ref.LastUpdate
class= " lastRow del
>Attachments " di nome " del class= del class= " valore " del
il

class= " fileInfo " del
il title= " " di nome di schedario del class= " di SampleReport.xls il class= (16 KB)  Javascript " del href= " " dei attachmentDetails del class= di (tipo di lima particolari)  
class= " descrizione " del
Tabelle di esempio e output
previsto
il class= di
del >
class= del

Risposta : Tabella di occhiata di SQL con i riferimenti multipli basati sul campo della data dell'aggiornamento

Potreste generare un calendario di giorni ed unire le vostre tabelle ad esso
GENERARE LA FUNZIONE [dbo]. [DAY_CALENDAR]
(
      @StartDate TDATETIME,
      @EndDate TDATETIME
)
RITORNI
      TABELLA del @DYCALENDAR
(
      DATETIME di StartDate,
      DATETIME di EndDate,
      DATETIME di OnDay
)
AS
COMINCIARE
      DICHIARARE IL @VARSTARTTIME TDATETIME, IL @VARENDTIME TDATETIME
      
      regolare il @varStartTime = DATEADD (dd, 0, DATEDIFF (dd, 0, @StartDate))
      
      mentre il @varStartTime <>      comincia
            regolare il @varEndTime = DATEADD (DD, 1, @varStartTime) --concluder tempo
            regolare i @varRes = il @varStartTime
            
            inserire in @DYCALENDAR
            valori (@varStartTime, @varEndTime, @varStartTime)
            
            regolare il @varStartTime = il @varEndTime
      estremità            
      
      RITORNO
ESTREMITÀ
       
Domanda
SELEZIONARE *
Dal ceppo di CodeLogging
INTERNO UNIRE il riferimento di CodeReference SU log.code = ref.code
INTERNO UNIRE DAY_CALENDAR (08/01/2010', “08/31/2010„) LOGDAYS SOPRA
  (>= LOGDAYS.StartDate di log.date e ceppo. Data <� LOGDAYS="">
Altre soluzioni  
 
programming4us programming4us