Problema di somme

mercoledì 19 maggio 2010 - 14.29

Mau67 Profilo | Expert

Ciao al forum, ho un grande problema per me ma magari per qualcuno con più esperienza forse è una passeggiata.

Vi spego il problema:

ho questa select che mi raggruppa in anni mesi e giorni per tipologia di azienda tutti i periodi lavorativi svolti:

strSQL = "SELECT AttoOperativa.ID, ((Sum(Servizi.Aca)) + (Fix(((Sum(Servizi.Mca)) + Fix(((Sum(Servizi.Gca)) / 30))) / 12))) AS Aca," & _
"(((((Sum(Servizi.Mca)) + (Fix(((Sum(Servizi.Gca)) / 30))))) / 12 - (Fix(((Sum(Servizi.Mca)) + (Fix((Sum(Servizi.Gca)) / 30))) / 12))) * 12) AS Mca," & _
"((((Sum(Servizi.Gca)) / 30) - Fix(((Sum(Servizi.Gca)) / 30))) * 30) AS Gca," & _
"((Sum(Servizi.Asu)) + (Fix(((Sum(Servizi.Msu)) + Fix(((Sum(Servizi.Gsu)) / 30))) / 12))) AS Asu," & _
"(((((Sum(Servizi.Msu)) + (Fix(((Sum(Servizi.Gsu)) / 30))))) / 12 - (Fix(((Sum(Servizi.Msu)) + (Fix((Sum(Servizi.Gsu)) / 30))) / 12))) * 12) AS Msu," & _
"((((Sum(Servizi.Gsu)) / 30) - Fix(((Sum(Servizi.Gsu)) / 30))) * 30) AS Gsu," & _
"((Sum(Servizi.Ata)) + (Fix(((Sum(Servizi.Mta)) + Fix(((Sum(Servizi.Gta)) / 30))) / 12))) AS Ata," & _
"(((((Sum(Servizi.Mta)) + (Fix(((Sum(Servizi.Gta)) / 30))))) / 12 - (Fix(((Sum(Servizi.Mta)) + (Fix((Sum(Servizi.Gta)) / 30))) / 12))) * 12) AS Mta," & _
"((((Sum(Servizi.Gta)) / 30) - Fix(((Sum(Servizi.Gta)) / 30))) * 30) AS Gta," & _
"((Sum(Servizi.Apa)) + (Fix(((Sum(Servizi.Mpa)) + Fix(((Sum(Servizi.Gpa)) / 30))) / 12))) AS Apa," & _
"(((((Sum(Servizi.Mpa)) + (Fix(((Sum(Servizi.Gpa)) / 30))))) / 12 - (Fix(((Sum(Servizi.Mpa)) + (Fix((Sum(Servizi.Gpa)) / 30))) / 12))) * 12) AS Mpa," & _
"((((Sum(Servizi.Gpa)) / 30) - Fix(((Sum(Servizi.Gpa)) / 30))) * 30) AS Gpa," & _
"((Sum(Servizi.Afa)) + (Fix(((Sum(Servizi.Mfa)) + Fix(((Sum(Servizi.Gfa)) / 30))) / 12))) AS Afa," & _
"(((((Sum(Servizi.Mfa)) + (Fix(((Sum(Servizi.Gfa)) / 30))))) / 12 - (Fix(((Sum(Servizi.Mfa)) + (Fix((Sum(Servizi.Gfa)) / 30))) / 12))) * 12) AS Mfa," & _
"((((Sum(Servizi.Gfa)) / 30) - Fix(((Sum(Servizi.Gfa)) / 30))) * 30) AS Gfa" & _
" FROM AttoOperativa INNER JOIN Servizi ON AttoOperativa.IDAnagrafica = Servizi.IDAnagrafica where AttoOperativa.IDAnagrafica = '" & ComboBox1.SelectedValue & "' AND AttoOperativa.ID ='" & Id.Text & "'And Servizi.Dal <= #" & CDate(Id.SubItems(1).Text).Month & "/" & CDate(Id.SubItems(1).Text).Day & "/" & CDate(Id.SubItems(1).Text).Year & "# GROUP BY AttoOperativa.ID"


Adesso è cambiata la condizione in questo modo:

Ad ogni tipologia di azienda viene classificata con una percentuale e beneficiare di una indennità fino al raggiungimento di 20 anni di lavoro prestato presso le varie tipologie di aziende esempio:

azienda 1 valutata con 1%
azienda 2 valutata con 2,50%
azienda 3 valutata con 3,25%
azienda 4 valutata con 4,50%

quidi se ho prestato la mia attività lavorativa per:

azienda 1 valutata con 1% 1 anno 0 mesi 15 giorni
azienda 2 valutata con 2,50% 3 anni 10 mesi 15 giorni
azienda 3 valutata con 3,25% 2 anno 1 mesi 25 giorni
azienda 4 valutata con 4,50% 0 anno 8 mesi 05 giorni

Per un totale di 7 anni 0 mesi 0 giorni con residuo di 8 mesi che serviranno per il proseguo della carriera e saranno sommati agli altri periodi appena raggiunto un ulteriore anno.

Invece se si presenta questa condizione che anche se ei superano i 20 anni il blocco deve avvenire per i 20 anni nella misura più favorevole:

azienda 1 valutata con 1% 5 anno 0 mesi 15 giorni
azienda 2 valutata con 2,50% 3 anni 10 mesi 15 giorni
azienda 3 valutata con 3,25% 9 anno 1 mesi 25 giorni
azienda 4 valutata con 4,50% 6 anno 8 mesi 05 giorni

cose devo ottenere i periodi più favorevoli:

azienda 4 valutata con 4,50% 6 anno 8 mesi 05 giorni
azienda 3 valutata con 3,25% 9 anno 1 mesi 25 giorni
azienda 2 valutata con 2,50% 3 anni 10 mesi 15 giorni
azienda 1 valutata con 1% 0 anno 3 mesi 15 giorni <<<<< qui diminuisce perchè meno favorevole

per un totale di 20 anni.

Non sò come fare spero un una grossa mano grazie in anticipo





Mau67

freeteo Profilo | Guru

Ciao,
mi sembra che sia lo stesso post che hai scritto qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=35538

ps: on fare il cross-post, appena possiamo ti aiutiamo...e meglio se da una parte sola

Teniamo valido quello.
Grazie.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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