Sql 用行号更新列
我在SQL Server存储过程中有一个带有Id和日期列的临时表。表中已经填充了日期,我希望能够根据日期升序在id列中添加序号 我试过以下方法Sql 用行号更新列,sql,sql-server,Sql,Sql Server,我在SQL Server存储过程中有一个带有Id和日期列的临时表。表中已经填充了日期,我希望能够根据日期升序在id列中添加序号 我试过以下方法 UPDATE #Weeks SET Id = ( SELECT ROW_NUMBER() OVER (ORDER BY WeekDate ASC) AS Id FROM #Weeks AS DATA); 然后得到这个错误 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时 感谢您的帮助 这对我
UPDATE #Weeks
SET Id = (
SELECT ROW_NUMBER() OVER (ORDER BY WeekDate ASC) AS Id
FROM #Weeks AS DATA);
然后得到这个错误
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时
感谢您的帮助
这对我有用
更新周
SET Id=tab.Id
从w周开始
内连接
选择工作日,
按工作日ASC作为Id的订单上的行号
从w.WeekDate=Tab.WeekDate上的Weeks选项卡尝试以下操作:
UPDATE #Weeks
SET Id = Tab.Id
FROM #Week w
INNER JOIN (
SELECT Id,
ROW_NUMBER() OVER (ORDER BY WeekDate ASC) AS Id
FROM #Weeks ) Tab ON w.Id = Tab.Id
因为子查询返回多行,并且只返回一行的and=运算符。试试这个
;with cte as
(
SELECT Id,ROW_NUMBER() OVER (ORDER BY WeekDate ASC) AS DATA FROM #Weeks
)
UPDATE #Weeks SET Id=DATA from cte
是否用行号更新列?这不是个好主意@mehdi什么是好主意?更新Weeks SET Id=tab.Id FROM Weeks w Internal JOIN SELECT WeekDate,w.WeekDate=Tab.WeekDate我编辑了原始问题并发布了对我有用的答案……hawk为我指明了正确的方向,谢谢again@realnumber3012不是抄袭过去,只是缺少一个角色。请再试一次!!我认为这是一个好的方向。但是,我会这样写:;当CTE作为SELECT WeekDate时,按WeekDate ASC作为周更新[UPDATEWeeks]中的新Id设置[UPDATEWeeks].[Id]=CTE。[NEWIID]作为周更新WEKS]中的[UPDATEWeeks]在CTE上内部加入CTE。[WeekDate]=[UPDATEWeeks].[WeekDate];
UPDATE #Weeks
SET Id = t.Id1
FROM #Week w
INNER JOIN
(
SELECT Id, ROW_NUMBER() OVER (ORDER BY WeekDate ASC) AS Id1
FROM #Weeks ) T ON w.Id = t.Id