Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come creare una colonna calcolata in una tabella di SQL Server 2008

Puoi racchiudere la tua query nella funzione in questo modo (HAS per restituire un valore):

CREATE FUNCTION dbo.SumIt(@Key1 varchar(max))
returns float
as
begin
  return (select sum(UTOTALWBUD) from
   CONTACT1 inner join
   CONTACT2 on
   CONTACT1.ACCOUNTNO=CONTACT2.ACCOUNTNO
   where [email protected]
   group by KEY3)
END

E usa questa funzione invece con il campo calc - qualcosa del genere:

alter table ManagerTaLog add WeeklyBudget as dbo.SumIt(Key1)

NOTA

che sarà il killer delle prestazioni per query del genere:

select * from ManagerTaLog 

Dovresti cambiare la tua funzione in questo modo, cioè accettare NON varchar valore, ma NVARCHAR(255) - lo stesso tipo della colonna Manager. Provalo.