Ошибка T-SQL при попытке вставить в темп - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть временная таблица, которую я пытаюсь заполнить из оператора select.

Однако я получаю эту ошибку:

Имя столбца или количество предоставленных значений не соответствует определению таблицы

Я отследил его до столбца endtime, который использовал LEAD; если бы я удалил этот столбец LEAD, он бы работал?

Не уверен, что мне не хватает

Спасибо, Майк

IF OBJECT_ID('tempdb.dbo.#flextx', 'U') IS NOT NULL
     DROP TABLE #flextx; 

 CREATE TABLE dbo.#flextx
 (
     OmanId VARCHAR(255),
     MRDF VARCHAR(255), 
     status VARCHAR(255), 
     statusid BIGINT, 
     EVENT_ACTION BIGINT,
     starttime DATETIME,
     endtime DATETIME
 ) 

INSERT INTO dbo.#flextx
    SELECT 
        f.OmanId, 
        f.MRDF, 
        s.status, 
        s.statusid, 
        f.EVENT_ACTION, 
        (f.TIMESTAMP) AS starttime,
        (LEAD(f.TIMESTAMP, 1, GETDATE()) OVER (ORDER BY f.TIMESTAMP)) AS endtime 
    FROM  
        dbo.#flext f 
    LEFT JOIN  
        dbo.statues AS s ON s.flexstatus = f.JOB_STATUS_TEXT
    WHERE 
        EVENT_ACTION IN (225, 226)  
        AND s.statusid = 23 
    ORDER BY 
        MRDF, EVENT_ACTION 

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Это ошибка времени компиляции. Добавьте GO после оператора CREATE TABLE.

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

0 голосов
/ 01 ноября 2018

у вас есть опечатка, я думаю, вы хотите, чтобы конечное время было следующим временем запуска, которое будет выглядеть следующим образом:

     (f.starttime) AS starttime,
      ( LEAD(f.starttime,1,GetDate()) OVER (ORDER BY mrdf, event_action) ) AS endtime 

нет столбца TIMESTAMP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...