如何使用同一表中的其他列的计数更新列

时间:2019-04-18 01:05:17

标签: sql sql-server-2017

此select语句运行良好,并为我提供了所需的答案,因为我试图查看ID在同一表中出现了多少次,因为它会告诉我ID显示在多少个位置(州中的位置) )。

SELECT ID, COUNT(ID) as CountOfID
FROM Locations_Number
GROUP BY ID
ORDER BY CountOfID Asc;

但是如何将其转换为UPDATE语句,以便我可以引用它 由于“ CountOfLocations”,以下内容显然不起作用 (无效的列名'CountOfLocations')。我可以在这里使用内部联接吗?

UPDATE Locations_Number
set CountOfID =
(SELECT COUNT(ID) as CountOfID
FROM Locations_Number
GROUP BY ID, CountOfID)

1 个答案:

答案 0 :(得分:2)

使用窗口功能和可更新的CTE:

with toupdate as (
      select ln.*, count(*) over (partition by id) as cnt
      from Locations_Number ln
     )
update toupdate
    set CountOfID = cnt;