4

我有以下 SELECT 语句。

SELECT     AETID, DSRID, FYEID, BASICRATE, EURORATE, 
  COMID, BRAID, CURID, CURIDCONV, ENTRYDATE, EVNUMBER, 
  ORIGIN, IEEID, RELDOCNUM, GJOID, JOURNALNUM,
  JUSTIFICATION, KEPYOAMOUNT, KEPYONUM, STATUS, 
  UPDSTATUS, TOTALCB, IDLINKED, CREUSERID, CREUSERDATE, 
  UPDUSERID, UPDUSERDATE, ACEIDCROSSENTRY, ACEIDCROSSEDENTRY, 
  ISCROSS, ISCROSSED, ACEIDCANCEL, ACEIDPRIMARY, CCEID
FROM         EliteUser.ACE
WHERE     (JOURNALNUM > 1193) 
  AND (JOURNALNUM < 2387)

我想要做的是更新特定的行,以便journalnum = 1194更新到 1,journalnum = 1195更新到 2 等

4

2 回答 2

8

哪一列是要输入的新值?假设您要更新 JournalNum 列,使其从 1 开始:

UPDATE
    EliteUser.ACE
SET
    JournalNum = JournalNum - 1193
WHERE
    JournalNum > 1193
AND JournalNum < 2387
于 2013-01-21T12:42:59.943 回答
3
UPDATE EliteUser.ACE
SET journalnum = journalnum - 1193
WHERE  JOURNALNUM > 1194 
   AND JOURNALNUM < 2387;

或者:

UPDATE e
SET e.JOURNALNUM = t.rownum
FROM EliteUser.ACE e
INNER JOIN
(
  SELECT JOURNALNUM, ROW_NUMBER() OVER(ORDER BY JOURNALNUM ASC) rownum
  FROM EliteUser.ACE
  WHERE  JOURNALNUM > 1194 
    AND JOURNALNUM < 2387
) t ON e.JOURNALNUM = t.JOURNALNUM
于 2013-01-21T12:37:54.043 回答