webForumDet fria alternativet

Beräknat fält

Databaser & SQLur Databashanterare & SQL

6 svar · 343 visningar · startad av clarkbones

Medlem sedan feb. 20013 023 inlägg
Frågan#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

------------------
essentitia preter non sans multiplicandum

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

------------------
essentitia preter non sans multiplicandum

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.

------------------
essentitia preter non sans multiplicandum

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.

------------------
essentitia preter non sans multiplicandum

128 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
125 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)