Where in select su ssis

venerdì 05 marzo 2010 - 09.34

memmo77 Profilo | Expert

In molte select, all'interno di vari task del mio ssis, mi sono trovato per necessità di progettazione a dover scrivere la mia where aggiungendo questo codice:
WHERE
AND F1.ANNO = ?
AND (F1.MESE = ?
OR (F1.MESE >= ?-3 AND F1.MESE <= ?))

Questo per prendere un intervallo di mesi che va da T a T-3. Solo che scritta così, nel caso della data di marzo (il calcolo lo faccio per i mesi 12,9,6,3), non funzionerebbe perchè il mio intervallo andrebbe da:

2007-03
2007-02
2007-01
2006-12

Quindi l'ultimo periodo verrebbe scartato.
Ho provato a risolvere con una funzione che mi restituisce correttamente l'intervallo:

AND dbo.UF_GETLASTDAYOFMONTH(ANNO, MESE) >= DATEADD(MONTH,-3, dbo.UF_GETLASTDAYOFMONTH(2008, 12))
AND dbo.UF_GETLASTDAYOFMONTH(ANNO, MESE) <= dbo.UF_GETLASTDAYOFMONTH(2008, 12)

Solo che inserendola nel mio ssis e mettendo ? al posto del 2008 e del 12, non funziona e mi da errore. Se li passassi fissi al contrario funzionerebbe.
Ho visto che potrei passare una variabile al posto di scrivere un comando sql. Solo che sono tante le select e non vorrei mettere uno script per creare di volta in volta la select (non so nemmeno se funziona così non l'ho mai provato).
Quindi chiedo c'è un modo diverso per scrivere la mia select rendendola "buona" anche all'interno del ssis?
Grazie




**************************
Ho risolto sostituendo le mie select con exec di stored.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5