Welcome to Sign in | Join | Help
in Search

Reutilizarea datelor

Last post 03-01-2014, 11:17 by rsocol. 3 replies.
Sort Posts: Previous Next
  •  02-02-2014, 1:25 9630

    Reutilizarea datelor

    Salut, nu stiu cum se numeste in realitate ceea ce vreau eu, dar treaba sta in felul urmator: trebuie sa fac o prelucrare sa zicem asupra unei tabele cu salariati unde trebuie sa fac mai multe calcule (in coloane diferite) porinind de la valoarea salariului de baza obtinut printr-o functie ce primeste ca parametrii ID-ul salariatului si luna curenta. Cum se poate folosi valoarea returnata de functie in toate calculele ce trebuiesc facute in recordul curent fara a apela functia de fiecare data cind calculez valoarea unei coloane?
    Multumesc!
  •  02-06-2014, 3:34 9631 in reply to 9630

    Re: Reutilizarea datelor

    Scuze pentru intarziere.
    O variabila in care sa pui rezultatul functiei nu te ajuta?
  •  02-08-2014, 12:30 9632 in reply to 9630

    Re: Reutilizarea datelor

    http://www.sqlservercentral.com/articles/Best+Practices/61537/

    http://weblogs.sqlteam.com/brettk/archive/2005/05/25/5276.aspx
  •  03-01-2014, 11:17 9636 in reply to 9630

    Re: Reutilizarea datelor

    Salut,

    Nu sunt sigur dacă am înțeles bine ce vrei, nu spun că e cea mai bună soluție, dar poate este util așa ceva:

    UPDATE t

    SET SalariuDeBaza=NoulSalariuDeBaza,

       ContributieSanatate=NouaContributieSanatate,

       ContributieCAS=NouaContributieCAS,

       DeducerePersonala=NouaDeducerePersonala,

       SalariuImpozabil=NoulSalariuImpozabil,

       ImpozitSalarii=NoulImpozitSalarii,

       SalariuNet=NoulSalariuNet

    FROM (

       SELECT *, NoulSalariuNet=NoulSalariuDeBaza-NouaContributieSanatate-NouaContributieCAS-NoulImpozitSalarii

       FROM (

         SELECT *, NoulImpozitSalarii=NoulSalariuImpozabil*0.16

         FROM (

            SELECT *, NoulSalariuImpozabil=NoulSalariuDeBaza-NouaContributieSanatate-NouaContributieCAS-NouaDeducerePersonala

            FROM (

               SELECT *, NouaDeducerePersonala=CASE

                  WHEN NoulSalariuDeBaza<=1000 THEN 250

                  WHEN NoulSalariuDeBaza>3000 THEN 0

                  ELSE 250*(1-(NoulSalariuDeBaza-1000)/2000)

               END

               FROM (

                  SELECT *, NouaContributieSanatate=NoulSalariuDeBaza*0.055, NouaContributieCAS=NoulSalariuDeBaza*0.105

                  FROM (

                    SELECT *, dbo.CalculeazaSalariuDeBaza(s.ID_Salariat,s.Luna) AS NoulSalariuDeBaza

                    FROM StatSalarii s

                    WHERE s.Luna=@LunaCurenta

                  ) x1

               ) x2

            ) x3

         ) x4

       ) x5

    ) t

     

    Răzvan

    PS. Codul este netestat, iar formulele folosite nu reflectă în totalitate impozitele care trebuie calculate.

View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems