Не могу понять, почему я получаю неверную ошибку имени столбца

У меня есть эти две таблицы тем, которые я использую (они были фактически написаны предыдущим разработчиком, и я пытаюсь настроить его код быстрее, не используя курсоры, но это не относится к делу), и я столкнулся с небольшим проблема, которую я не могу понять.

Вот какой код:

CREATE TABLE #bc1 (
         [ContractID] decimal
        ,[custid] int
        ,[PostDate] date
        ,[RouteID] varchar(50)
        ,[RouteCommission] money
        ,[ContractTotal] money
        ,[ContractTotal0] money
    )

    INSERT INTO #bc1 ( [ContractID], [custid], [PostDate], [RouteID], [RouteCommission] )
    SELECT
         t.[ContractID]
        ,t.[custid]
        ,t.[PostDate]
        ,t.[RouteID]
        ,t.[RouteCommission]
    FROM 
        #tc1 t;

Теперь, как вы видите, это довольно просто. Существует таблица # bc1 , которая создается с пятью столбцами, и получает все данные из другой таблицы, содержащей 7 столбцов. Это в значительной степени неприятно в середине запроса (это около четырех страниц, поэтому я не включил его), и именно там он ломается. Это говорит мне

Msg 207, уровень 16, состояние 1, строка 178
  Недопустимое имя столбца 'custid'.

и это сводит меня с ума. Кстати, строка 178 - это оператор insert.

Есть идеи?

0
nl ja de
Вы уверены, что таблица # tc1 имеет поле custid ?
добавлено автор SWeko, источник
Оператор create для # bc1, но select ожидает столбец custid в таблице # tc1
добавлено автор Andomar, источник
И имеет ли таблица # tc1 столбец custid ?
добавлено автор Lamak, источник
Существуют ли триггеры или динамический код, работающие в временных таблицах? Если вы пытаетесь убежать от курсоров, рассмотрите APPLY и CROSS APPLY.
добавлено автор Volvox, источник
Я бы использовал «IF OBJECT_ID (« tempdb .. # tc1 ») НЕ ТАБЛИЦА NULL DROP TCL1« И »IF OBJECT_ID (« tempdb .. # bc1 ») НЕ ТАБЛИЦА NULL DROP TABLE # bc1" в начале запроса ,
добавлено автор Neil, источник
В качестве бонусного комментария (и потому, что я слишком люблю курсоров), посмотрите здесь альтернативы;) stackoverflow.com/questions/5425642/…
добавлено автор JOpuckman, источник
Можете ли вы опубликовать определение # tc1? Кроме того, иногда номер строки для ошибки может быть совсем немного. Вы можете временно добавить дополнительную вставку в пустую строку, которая ссылается на не существующую таблицу, чтобы узнать, какой номер строки вы получите для этого. Если это не 177, ваша исходная ошибка также находится в другом месте.
добавлено автор Sebastian Meine, источник
# tc1 имеет столбец custid. Я думаю, что проблема заключается в том, что временная таблица никогда не была удалена. Я бросил временную таблицу перед ее созданием, мы посмотрим, как это получится.
добавлено автор Corran Horn, источник

1 ответы

 Can you try 'SELECT * FROM #tc1' as a test (without inserting into #bc1 table).
1
добавлено
Это должен быть комментарий, а не ответ
добавлено автор Lamak, источник
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)