Effettivamente la funzione IsNull richiede due parametri: il campo da testare ed un valore da restituire se il test è confermato. MSDN dice di usare la clausola IS NULL se si intende semplicemente testare se un campo è nullo.
Riguardando, però, la tua condizione noto ora che effettivamente a te manca un parametro nella BETWEEN. BETWEEN vuole due parametri, tu ne stai usando uno solo.
La sintassi dell'operatore BETWEEN è questa:
codice:
NomeCampo BETWEEN Valore1 AND Valore2
Nella tua clausola, manca completamente il valore 2 (e la AND di giunzione). La riscrivo con le parentesi e inserendo ciascuna condizione su una riga separata, così vedi l'errore
codice:
(tr.data >= '01-01-2011') AND
(tr.data <= '10-24-2011') AND
(tr.data between storico.datainizio ???) AND
(storico.datafine IS NULL)
Ciao.