PDA

View Full Version : [access] duplicare valori in un periodo di date


Aut0maN
10-02-2014, 19:01
ho degli eventi con data inizio e fine con un totale di denaro speso per ogniuno, vorrei confrontarlo con un calendario ed assegnare una quota giornaliera per tutti i giorni compresi tra data inizio e fine compresi, avete suggerimenti? :)

ho provato la funzione IIF ma sicuramente č sbagliata perchč non riesco ovviamente a fargli replicare i valori per le date che non ho da confrontare avendo solo inizio e fine ed invece il calendario le ha tutte...

Daniels118
12-02-2014, 13:09
Se ho ben capito non devi creare dei duplicati, ma riempire i buchi con una specie di funzione di interpolazione.
Premesso che possono esserci delle soluzioni migliori, volendo realizzare esattamente quello che chiedi io metterei in "join" le date prese dal calendario con gli intervalli disponibili, in modo da avere un record per ogni data del calendario e come valori quelli corrispondenti ai relativi intervalli.

Supponendo che gli intervalli siano contigui e non sovrapposti, la query dovrebbe essere pių o meno cosė:
SELECT calendario.data, spese.valore
FROM calendario, spese
WHERE calendatio.data BETWEEN spese.inizio AND spese.fine

Se invece gli intervalli non sono contigui, ma comunque distinti:
SELECT calendario.data, NZ(spese.valore, 0)
FROM calendario, spese
WHERE (calendario.data BETWEEN spese.inizio AND spese.fine)
OR NOT EXISTS (SELECT 1 FROM spese WHERE calendario.data BETWEEN spese.inizio AND spese.fine)

Se invece gli intervalli sono sovrapposti la query si fa pių complessa.