查找重复值的出现

Finding Occurrence of the duplicate values

我有 table 3 列(id、名称、出现次数),我想根据 id 列更新出现次数列,并附上快照以供参考。

例如,如果我的 ID 列有 3 次“606”值,那么我出现的列应该有 3 次与所有“606”值。

下面是我试过的方法

我尝试使用 group byHaving 子句查找重复值并将其保存在临时 table 中,然后我尝试从那里加入 table 值来自温度 table.

您可以在 可更新的 CTE 中使用 window 函数

您尚未提供任何实际样本数据,因此未经测试,但以下内容应该有效:

with x as (
  select Id, Occurence, count(*) over(partition by Id) qty
  from Table
)
update x 
set Occurence=Qty

您也可以采用基于 GROUP BY 的方法。

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
ID NAME occurance
1 AAA 2
1 AAA 2
2 CCC 1
3 DDD 2
3 DDD 2
4 EEE 1
5 FFF 1

您可以使用 CTE 并计算行号并根据 CTE

更新您的 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