Ottenere il primo record utile

giovedì 10 marzo 2016 - 21.48
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010  |  MySQL 5.5

Mau67 Profilo | Expert

Buona sera a tutto il forum,
stò sviluppando un applicazione per il calcolo degli stipendi, ho solo un problema,
ho una tabella dove memorizzo tutti gli stipendi per livello e data di decorrenza,
vorrei evitare di memorizzare per tutti i mesi di tutti gli anni tutti gli stipendi che per la maggior parte dei mesi si ripetono.

Praticamente vorrei gestire la tabella inserendo gli stipendi solo al verificarsi di aumento.

Il problema è che non so come scrivere la select per farmi restituire i record corretti.
Esempio:
Tabella stipendio
decorrenza 01/01/2013 livello 7 importo 925,00
decorrenza 01/01/2016 livello 7 importo 1000,00
decorrenza 01/03/2016 livello 7 importo 1250,00

quando eseguo la select vorrei ottenere:
se filtro per il mese agosto 2015 dovrei ottenere per il livello 7 l'importo di 925,00
se filtro per il mese gennaio 2016 dovrei ottenere per il livello 7 l'importo di 1000,00
se filtro per il mese febbraio 2016 dovrei ottenere per il livello 7 l'importo di 1000,00
se filtro per il mese marzo 2016 dovrei ottenere per il livello 7 l'importo di 1250,00

e cosi via

spero in un aiuto grazie in anticipo

Mau67

sanghino Profilo | Junior Member

>Buona sera a tutto il forum,
>stò sviluppando un applicazione per il calcolo degli stipendi,
Ciao,
secondo me, in un contesto come quello che ci presenti, risolvi con una query di questo tipo:

SELECT TOP 1 * FROM stipendio WHERE decorrenza =< '2015-08-01' order by decorrenza DESC;

L'esempio sopra assume che tu utilizzi SQLServer, su MySql si deve usare "LIMIT" mentre su Oracle "ROWNUM". Ecco alcuni esempi:

SQLServer:
SELECT TOP 3 * FROM CUSTOMERS;
MySQL:
SELECT * FROM CUSTOMERS LIMIT 3;
Oracle:
SELECT * FROM CUSTOMERS WHERE ROWNUM <= 3;

Ciao

>Il problema è che non so come scrivere la select per farmi restituire
>i record corretti.
>Esempio:
>Tabella stipendio
>decorrenza 01/01/2013 livello 7 importo 925,00
>decorrenza 01/01/2016 livello 7 importo 1000,00
>decorrenza 01/03/2016 livello 7 importo 1250,00
>
>quando eseguo la select vorrei ottenere:
>se filtro per il mese agosto 2015 dovrei ottenere per il livello
>7 l'importo di 925,00
>se filtro per il mese gennaio 2016 dovrei ottenere per il livello
>7 l'importo di 1000,00
>se filtro per il mese febbraio 2016 dovrei ottenere per il livello
>7 l'importo di 1000,00
>se filtro per il mese marzo 2016 dovrei ottenere per il livello
>7 l'importo di 1250,00
>
>e cosi via
>
>spero in un aiuto grazie in anticipo
>
>Mau67

Sanghino
--------------------------
www.extrageek.com

Mau67 Profilo | Expert

Grazie per la risposta,
lunedi provo e poi ti faccio sapere.
Grazie
Mau67
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