Попробуй обновить таблицу в SQL

Я пытаюсь обновить свою таблицу, используя низкий уровень запроса, но он продолжал давать мне ошибки. Пожалуйста, прочитайте рем, чтобы увидеть знать ошибки

UPDATE VM1DTA.DCIRPG CM  --invalid columm name cm
SET ILCHDRNUM =    --incorrect syntax near SET and =
    (SELECT ILCHDRNUM FROM VM1DTA.DCIARG WHERE INCHDRNUM = CM.CHDRNUM);
COMMIT;

UPDATE dbo.DCIRPG CM     --invalid columm name cm
SET ILPYCLT =     --incorrect syntax near SET and =
    (SELECT CLNTKEY
     FROM dbo.DCIARG
     WHERE CLNTKEY = CM.PAYCLT --the multipath CM.PAYCLT can't bound
       AND SEQNUMB = 1
       AND);

3 ответа

SQL Server не допускает псевдонимов в UPDATE, Вам нужно использовать FROM пункт:

UPDATE CM 
   SET ILCHDRNUM =    --incorrect syntax near SET and =
       (SELECT ILCHDRNUM FROM VM1DTA.DCIAPF WHERE INCHDRNUM = CM.CHDRNUM)
   FROM VM1DTA.DCIRGPF CM;

UPDATE CM     --invalid columm name cm
    SET ILPYCLT =     --incorrect syntax near SET and =
           (SELECT CLNTKEY
            FROM dbo.DCIARG
            WHERE CLNTKEY = CM.PAYCLT AND
                  SEQNUMB = 1
           )
    FROM dbo.DCIRPG CM;

В качестве альтернативы:

UPDATE RPG
  SET RPG.ILCHDRNUM = ARG.ILCHDRNUM
  FROM VM1DTA.DCIRPG AS RPG 
  INNER JOIN VM1DTA.DCIARG AS ARG
  ON RPG.CHDRNUM = ARG.INCHDRNUM;

UPDATE RPG
  SET RPG.ILPYCLT = ARG.CLNTKEY
  FROM dbo.DCIRPG AS RPG
  INNER JOIN dbo.DCIARG AS ARG
  ON RPG.PAYCLT = ARG.CLNTKEY
  AND ARG.SEQNUMB = 1;

Кроме того, кто бы ни назвал эти таблицы и колонки, нужно отправиться в путь за сараем. Возможно несколько.

Вы можете попробовать со следующим

UPDATE CM  
SET CM.ILCHDRNUM =  DCI.ILCHDRNUM
from VM1DTA.DCIRPG CM
INNER JOIN VM1DTA.DCIARG DCI ON DCI.INCHDRNUM = CM.CHDRNUM

и второй запрос

UPDATE CM  
SET CM.ILPYCLT =    DCI.CLNTKEY        
FROM  dbo.DCIRPG CM 
INNER JOIN dbo.DCIARG DCI
ON  DCI.CLNTKEY = CM.PAYCLT 
AND DCI.SEQNUMB = 1
Другие вопросы по тегам