Inte om du inte vill komma in i dynamisk SQL. Eftersom du skrev "ren" antar jag inte.
Redigera: Eftersom han bad om ett dynamiskt SQL-exempel, ska jag ta en käft på det. Jag är inte ansluten till några databaser för tillfället, så det här är ur huvudet och kommer nästan säkert att behöva revideras. Men förhoppningsvis fångar det sakers anda:
-- Get list of columns in table
SELECT INTO #t
EXEC sp_columns @table_name = N'TargetTable'
-- Create a comma-delimited string excluding the identity column
DECLARE @cols varchar(MAX)
SELECT @cols = COALESCE(@cols+',' ,'') + COLUMN_NAME FROM #t WHERE COLUMN_NAME <> 'id'
-- Construct dynamic SQL statement
DECLARE @sql varchar(MAX)
SET @sql = 'INSERT INTO TargetTable (' + @cols + ') ' +
'SELECT ' + @cols + ' FROM TargetTable WHERE SomeCondition'
PRINT @sql -- for debugging
EXEC(@sql)