Вы не можете сделать это:
INSERT INTO CTABLE SELECT top(1) * FROM #t
Поскольку списки столбцов не совпадают.Вы удалили столбец PK из #t, поэтому у вас в столбце #t на 1 меньше, чем в CTABLE.Это эквивалентно следующему:
INSERT INTO CTABLE(pk, col1, col2, col3, ...)
select top(1) col1, col2, col3, ...
from #t
Это не будет работать по понятным причинам.Точно так же вы не сможете указать подстановочный знак * для выполнения вставки, если вы не вставляете все столбцы.Единственный способ выполнить вставку без включения PK - указать каждый столбец.Вы можете создать список столбцов с помощью динамического sql, но вам придется указать их так или иначе.