|
|
Subject: Condizioni SQL "raggruppate"
From: AlessandroD
Date: 5/4/2007 11:46:35 AM
lm wrote:
> Per la mia ignoranza in materia ho un piccolo problema di query sql in
> Sql2005 e non riesco a risolverlo (ho sempre usato il generatore
> presente in v.studio, ma in questo caso non mi è di aiuto).
> Il semplice problema è:
>
> Ho una tabella con x campi tra i quali Quantita, Anno, Settimana, e
> uno degli indici è formato da Anno + Settimana.
> Se voglio ottenere la somma della Quantita per ogni Anno-Settimana,
> dove però la coppia Anno-Settimana è "compresa tra", come devo
> impostare la query?
>
> L'ho scritta a mano in questo modo, ma non mi funziona correttamente:
>
> SELECT AnnoImp, SettImp, SUM(Quantita) AS Qta
> FROM MiaTabella WHERE (Anno >= 2006 AND Settimana >=
> 48) AND (Anno <= 2007 AND Settimana <= 16)
> GROUP BY AnnoImp, SettImp
> ORDER BY AnnoImp, SettImp
>
> Se la provo, inserendola nel generatore query di VS, mi mette le
> singole condizioni tra parentesi, ma io le ho bisogno in gruppo!
>
> Suggerimenti?
>
Mi sa che sbagli a scrivere la query da un punto di vista logico.
Se ti servono le righe per le settimane dalla 48 in poi per l'anno 2006, e
quelle
per le settimane fino alla 16 per l'anno 2007, la tua where deve essere
cambiata in:
where
(Anno=2006 and Settimana >=58) or
(Anno=2007 and Settimana <=16)
Ciao, Alessandro
Subject: Condizioni SQL "raggruppate"
From: AlessandroD
Date: 5/4/2007 1:34:21 PM
lm wrote:
> [...]
> La mia esigenza è quella di ottenere tutte le
> righe comprese tra il periodo impostato.
> Altri suggerimenti?
>
Puoi fare così:
where
(Anno = @AnnoI and Settimana >= @SettimanaI) or
(Anno = @AnnoF and Settimana <= @SettimanaF) or
(Anno > @AnnoI and Anno < @AnnoF)
Dove @AnnoI, @SettimanaI, @AnnoF, @SettimanaF sono i 4 parametri che
definiscono il periodo di ricerca.
Ciao, Alessandro
|