Beräknat fält

Databaser & SQL

6 svar · 357 visningar · startad av clarkbones

Medlem sedan feb. 20013 023 inlägg
Trådstart#1

Tjena, jag vill ha ett beräknat fält (Typ Intäkt-Kostnad=Resultat) i min tabell. Jag vet att man skapa det med transact-SQL, men kan man inte göra det manuellt? Det är rätt många fält i tabellen som är i princip klar och jag vill inte behöva koda det.

Medlem sedan dec. 200012 464 inlägg
#2

Jag förstår inte vad du menar.

Du kan ju lägga till beräkningar direkt i din select

select Intakt-Kostnad as Resultat
  from ogrish
Medlem sedan feb. 20013 023 inlägg
#3

Jo det är klart. Men databasen som jag skapar skall sedan användas som källa för att tankas till en OLAP-kub och snubben där tyckte att det vore enkelt om datat kom fint och färdigt, utan att hann behövde trixa ihjäl sig med SQL-satsen. Den är ganska många fält som skall beräknas och det är inte bara så enkelt som Intäkt-Kostnad=Resultat. Jag har gott om utrymme för db:n. OK att det strider mot någon Codds lagar, men måste man göra det i transact-SQL?

Medlem sedan dec. 200012 464 inlägg
#4

Ok, jo lite SQL blir det. Typ

 alter table ogrish add resultat int
 
 update ogrsih set resultat = intakt - kostnad
Medlem sedan dec. 200012 464 inlägg
#5

Om du sen vill att kolumnen resultat förändras om du ändrar/lägger till intakt och kostnad så får du skapa en trigger som hanterar det.

Medlem sedan feb. 20013 023 inlägg
#6

Hej! Jag behövde inte en trigger för att det beräknade värdet skulle ändras när jag körde en UPDATE. Det beräknade fältet ändrades automatiskt.

Medlem sedan dec. 200012 464 inlägg
#7

Nej, det var inte så jag menade. Update tar ju hand om de poster som finns. Jag tänkte bara om du lägger till nya poster efter det att du har gjort update och vill att resultat beräknas även för dessa poster utan att du behöver göra något i den applikation som lägger till data, i så fall behöver du en trigger.

252 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)