Selezionare l'ultimo movimento di un mese precedente alla data di elab...

lunedì 05 novembre 2012 - 17.00
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010  |  SQL Server 2008 R2

trinity Profilo | Guru

Salve ragazzi,

io ho una tabella denomita movimenti nella quale vi è una colonna di tipo data....

In sql dovrei il primo giorno di ogni mese quindi per esempio il primo novembre eseguire una select che mi prelava l'ultimo record inserito nel mese precedente anche se tale record possa essere stato salvato in data pregressa esempio 10/10/2012
Come posso fare?

Ciao

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

HolidaySoft.it Profilo | Junior Member

Ciao,
mi dici quale db utilizzi (oracle, mysql, sqlserver)??

Michele
A quick solution is a shortcut to troubleshooting
http://www.HolidaySoft.it
http://www.GarganoSapori.it

trinity Profilo | Guru

sqlserver
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

algraps Profilo | Junior Member

Ciao trinity,
vediamo se ho capito :
1o caso :
Data
10/10/2012 - Record
01/11/2012 - Record 2
02/11/2012 - Record 3

Se lanciassi una select oggi dovrei avere come dato di ritorno 10/10/2012

2o caso :
Data
10/10/2012 - Record
31/10/2012 - Record 4
01/11/2012 - Record 2
02/11/2012 - Record 3

Se lanciassi una select oggi dovrei avere come dato di ritorno 31/10/2012

3o caso :
Data
01/11/2012 - Record 2
02/11/2012 - Record 3

Se lanciassi una select oggi dovrei avere come dato di ritorno null

4o caso :
Data
10/10/2012 - Record
28/10/2012 - Record 5
01/11/2012 - Record 2
02/11/2012 - Record 3
31/10/2012 - Record 6

Se lanciassi una select oggi dovrei avere come dato di ritorno 31/10/2012

5o caso :
Data
10/10/2012 - Record
01/11/2012 - Record 2
02/11/2012 - Record 3
31/10/2012 - Record 6
28/10/2012 - Record 7

Se lanciassi una select oggi dovrei avere come dato di ritorno 31/10/2012 oppure 28/10/2012? Immagino 31/10/2012

Prova in questo modo:

SELECT * FROM Movimenti
WHERE DATEPART(m, date_created) = DATEPART(m, DATEADD(m, -1, getdate()))
AND DATEPART(y, date_created) = DATEPART(y, DATEADD(m, -1, getdate()))

In questo modo hai tutti i movimenti dell'ultimo mese. Se hai un id incrementante, puoi prendere l'ultimo record con l'id inserito. Puoi mettere un order by id oppure data.
Cosa ne pensi?

Fammi sapere
A.G.


trinity Profilo | Guru

Ok grazie mille...hai centrato in pieno il mio problema
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

HolidaySoft.it Profilo | Junior Member

Ciao,
partendo da una tabella MOVIMENTI così fatta:


231x198 8Kb


tramite questa select vengono restituiti gli articoli/movimenti con data maggiore. L'unica cosa che ti resta fare è filtrare dalla tabella movimenti il mese che ti interessa (dal tuo post mi sembra mese attuale - 1)

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Di seguito il risultato


231x198 8Kb

A quick solution is a shortcut to troubleshooting
http://www.HolidaySoft.it
http://www.GarganoSapori.it
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5