SQL server中的更新表
我的“事件”列为空时有一个类似于表的列 逻辑很简单。客户的销售日期可以出现一次或多次。我们首先为每个客户检查年份,如果年份相同,则检查销售日期,从而设置事件SQL server中的更新表,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我的“事件”列为空时有一个类似于表的列 逻辑很简单。客户的销售日期可以出现一次或多次。我们首先为每个客户检查年份,如果年份相同,则检查销售日期,从而设置事件 任何人都可以帮助我如何更新!谢谢。可以使用行号()功能完成 UPDATE table1 t SET Event = (WITH v AS (SELECT ROW_NUMBER() OVER(PARTITION BY CustomerId ORDER BY Year, SaleDate) AS row_num,
任何人都可以帮助我如何更新!谢谢。可以使用
行号()
功能完成
UPDATE table1 t SET Event =
(WITH v AS
(SELECT ROW_NUMBER() OVER(PARTITION BY CustomerId ORDER BY Year, SaleDate)
AS row_num, id
FROM table1)
SELECT row_num FROM v
WHERE id = t.id);
您可以使用以下查询。用实际的表名替换表名
UPDATE TableName SET [Event] = SeqTable.Seq
FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY CustomerId ORDER BY [Year],SaleDate) AS Seq
FROM TableName)
AS SeqTable
WHERE TableName.id = SeqTable.id
使用
CTE
和ROW\u NUMBER()
函数尝试此操作:
;WITH CTE AS
(
SELECT Event,
ROW_NUMBER() OVER (PARTITION BY Customer, Year ORDER BY SaleDate) rn
FROM YourTable
)
UPDATE CTE SET Event = rn
作为一个相关子查询,我认为该子查询在每次调用中只会返回一行,因此它只能生成
1
。