我有以下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,等等
答案 0 :(得分:7)
要进入的新值是哪一列?假设您要更新JournalNum列,使其从1开始:
UPDATE
EliteUser.ACE
SET
JournalNum = JournalNum - 1193
WHERE
JournalNum > 1193
AND JournalNum < 2387
答案 1 :(得分: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