<p>Is there a clean way of cloning a record in SQL that has an index(auto increment).  I want to clone all the fields except the index.  I currently have to enumerate every field, and use that in an insert select, and I would rather not explicitly list all of the fields, as they may change over time.</p>

Not unless you want to get into dynamic SQL.  Since you wrote "clean", I'll assume not.
Edit:
Since he asked for a dynamic SQL example, I'll take a stab at it.  I'm not connected to any databases at the moment, so this is off the top of my head and will almost certainly need revision.  But hopefully it captures the spirit of things:
```
```
-- 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)
```
```