Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Where in select su ssis
venerdì 05 marzo 2010 - 09.34
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
ven 5 mar 2010 - 09:34
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.
Torna su
Stanze Forum
Elenco Threads
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 !