Recalculate and replace large table without interrupting table reads
Two options, depending on the engine and/or the permissions you have - populate a second table, then rename that table (e.g. sp_rename 'thetable', 'deadtable'; sp_rename 'newtable', 'thetable'; drop table deadtable;), or populate a second table then have your application choose to use that table instead.