Automatically generated numbers I have a field called PropNum which is the proposal number for a marketing pursuit.  I want this field to be automatically generated by gathering data from other fields, automatically generating the last three numbers and automatically restarting back to 001 at the beginning of the next year.  For example, I have the following line in my data:

        Year,        Office,     PropNum, 
Record 1 2016       STL         16STL001
Record 2 2016       STL         16STL002
Record 3 2016       CHI         16CHI001
Record 4 2016       CHI         16CHI002


In addition to starting over at the beginning of the year, I would like the number to be sequential based the office.  As you can see in my example the STL office has a list of Proposal numbers and the CHI office has another.  Can anyone help me write the script to do this?
If going down the view approach which would limit disk IO, be more normalized and MAY perform better(depending on the use of the value), it would look something like this;

CREATE VIEW [newviewname] 
AS
    SELECT CAST(RIGHT(Year,2) AS VARCHAR(2)) + Office + ROW_NUMBER() OVER (PARTITION_BY Year, Office ORDER BY Record))
    FROM [your table]


Also, you may want to wrap the concatenated values with ISNULL() if any of those values might actually return NULL.  A NULL value concatenated with anything else will always return NULL.  

A trigger will actually be written very similarly except would need to be updated each time a value in the table is updated.  Unless there's some performance or data structure related need, I would avoid the trigger approach. 
Either way for a "correct" answer we would need to know your objectives. How do you intend to use the generated value.
BTW, this answer assumes you are using MS SQL.