declare @TABLE TABLE(ID INT, NAME CHAR(3), occurance int null)
insert into @TABLE VALUES
(1,'AAA',NULL),(1,'AAA',NULL),(2,'CCC',NULL),(3,'DDD',NULL), (3,'DDD',NULL),(4,'EEE',NULL),(5,'FFF',NULL);
;WITH CTE_Table as
(
SELECT ID, COUNT(*) AS Occurance
FROM @table
group by id
)
UPDATE t
SET occurance = c.occurance
FROM @table t
INNER JOIN CTE_Table as c
on C.ID = T.ID
SELECT * FROM @TABLE
;WITH q
AS
(
SELECT Id,COUNT(1) 'RowNum'
FROM YourTable
GROUP BY Id
)
UPDATE YourTable
SET Occurrence=q.RowNum
FROM YourTable t
INNER JOIN q
ON t.Id=q.Id
3条答案
按热度按时间ejk8hzay1#
您可以在 * 可更新CTE* 中使用 * 窗口函数 *。
您尚未提供任何实际的示例数据,因此这是未经测试的,但以下内容应该可以正常工作:
vlju58qv2#
您也可以使用基于GROUP BY的方法。
| 识别码|名称|出现|
| - -|- -|- -|
| 一个|美国汽车协会|2个|
| 一个|美国汽车协会|2个|
| 2个|CCC认证|一个|
| 三个|限定日|2个|
| 三个|限定日|2个|
| 四个|电子电气设备|一个|
| 五个|法国法郎|一个|
rjee0c153#
您可以使用CTE计算行号,并根据CTE更新表