title: How to create a calculated column in a SQL Server 2008 table
body: <p>I really need a calculated column on a table with simple sum.</p>
  
  <p>Please see below:</p>
  
  <pre><code>SELECT   key3
           ,SUM(UTOTALWBUD)
  FROM     CONTACT1
           INNER JOIN CONTACT2
              ON CONTACT1.ACCOUNTNO = CONTACT2.ACCOUNTNO
  WHERE    KEY1 = 'Client'
  GROUP BY KEY3
  </code></pre>
  
  <p>I have tried to create a calculated column by adding following</p>
  
  <pre><code>ALTER TABLE ManagerTaLog
  ADD         WeeklyBudget as (   SELECT
                                          key3
                                          ,SUM(UTOTALWBUD)
                              FROM        CONTACT1
                                          JOIN CONTACT2
                                              ON CONTACT1.ACCOUNTNO = CONTACT2.ACCOUNTNO
                              WHERE       KEY1 = 'Client'
                              GROUP BY    KEY3)
  </code></pre>
  
  <p>I got the error message: </p>
  
  <blockquote>
    <p>Msg 1046, Level 15, State 1, Line 4<br>
    Subqueries are not allowed in this context. Only scalar expressions are allowed.</p>
  </blockquote>
  
  <p>Please advise what can I do about it.</p>
  
  <p>Many thanks</p>
  
  <h2>Part 2</h2>
  
  <p>I have create a function; however, i get null values please advise. </p>
  
  <pre><code>CREATE FUNCTION [dbo].[SumIt](@Key3 varchar)
  RETURNS TABLE 
  AS
  RETURN
  (
  SELECT      SUM(UTOTALWBUD)
  FROM        CONTACT1
              JOIN CONTACT2
                  ON CONTACT1.ACCOUNTNO = CONTACT2.ACCOUNTNO
              JOIN Phone_List
                  ON CONTACT1.KEY3 = Phone_List.[Manager ]
  WHERE       KEY1 = 'Client'
              AND Phone_List.[Manager ] = @Key3
  GROUP BY [Manager ]
  
  )
  END
  
  GO
  </code></pre>
  
  <p>Just select statment that returns values I wish to add to Phone_list table</p>
  
  <pre><code>SELECT      [Manager ]
              ,SUM(UTOTALWBUD)
  FROM        CONTACT1
              JOIN CONTACT2
                  ON CONTACT1.ACCOUNTNO = CONTACT2.ACCOUNTNO
              JOIN Phone_List
                  ON CONTACT1.KEY3 = Phone_List.[Manager ]
  WHERE       KEY1 = 'Client'
  GROUP BY    [Manager ]
  </code></pre>
  
  <h2>Table definitions</h2>
  
  <pre><code>CREATE TABLE [dbo].[CONTACT1](
      [ACCOUNTNO] [varchar](20) NOT NULL,
      [COMPANY] [varchar](40) NULL,
      [CONTACT] [varchar](40) NULL,
      [LASTNAME] [varchar](15) NULL,
      [DEPARTMENT] [varchar](35) NULL,
      [TITLE] [varchar](35) NULL,
      [SECR] [varchar](20) NULL,
      [PHONE1] [varchar](25) NOT NULL,
      [PHONE2] [varchar](25) NULL,
      [PHONE3] [varchar](25) NULL,
      [FAX] [varchar](25) NULL,
      [EXT1] [varchar](6) NULL,
      [EXT2] [varchar](6) NULL,
      [EXT3] [varchar](6) NULL,
      [EXT4] [varchar](6) NULL,
      [ADDRESS1] [varchar](40) NULL,
      [ADDRESS2] [varchar](40) NULL,
      [ADDRESS3] [varchar](40) NULL,
      [CITY] [varchar](30) NULL,
      [STATE] [varchar](20) NULL,
      [ZIP] [varchar](10) NOT NULL,
      [COUNTRY] [varchar](20) NULL,
      [DEAR] [varchar](20) NULL,
      [SOURCE] [varchar](20) NULL,
      [KEY1] [varchar](20) NULL,
      [KEY2] [varchar](20) NULL,
      [KEY3] [varchar](20) NULL,
      [KEY4] [varchar](20) NULL,
      [KEY5] [varchar](20) NULL,
      [STATUS] [varchar](3) NOT NULL,
      [NOTES] [text] NULL,
      [MERGECODES] [varchar](20) NULL,
      [CREATEBY] [varchar](8) NULL,
      [CREATEON] [datetime] NULL,
      [CREATEAT] [varchar](5) NULL,
      [OWNER] [varchar](8) NOT NULL,
      [LASTUSER] [varchar](8) NULL,
      [LASTDATE] [datetime] NULL,
      [LASTTIME] [varchar](5) NULL,
      [U_COMPANY] [varchar](40) NOT NULL,
      [U_CONTACT] [varchar](40) NOT NULL,
      [U_LASTNAME] [varchar](15) NOT NULL,
      [U_CITY] [varchar](30) NOT NULL,
      [U_STATE] [varchar](20) NOT NULL,
      [U_COUNTRY] [varchar](20) NOT NULL,
      [U_KEY1] [varchar](20) NOT NULL,
      [U_KEY2] [varchar](20) NOT NULL,
      [U_KEY3] [varchar](20) NOT NULL,
      [U_KEY4] [varchar](20) NOT NULL,
      [U_KEY5] [varchar](20) NOT NULL,
      [recid] [varchar](15) NOT NULL
  ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  
  GO
  
  
  
  CREATE TABLE [dbo].[Phone_List](
      [Manager ] [nvarchar](255) NULL,
      [SalesCode] [nvarchar](255) NULL,
      [Email] [nvarchar](255) NULL,
      [PayrollCode] [nvarchar](255) NULL,
      [Mobile] [nvarchar](255) NULL,
      [FName] [nchar](20) NULL,
      [idd] [tinyint] NULL,
      [OD] [varchar](20) NULL,
      [WeeklyBudget]  AS ([dbo].[SumIt]([manager]))
  ) ON [PRIMARY]
  </code></pre>