SQL 使用 dense_rank() 将数据附加到 table

SQL append data to table using dense_rank()

我一直在尝试拼凑一些我在谷歌上搜索过但没有成功的代码。我正在尝试向现有 table 添加一个新列。我可以使用 select 查询中的以下代码查看该列:

我基本上想将此 select 查询的结果附加到我原来的 table。

Select  
    Dense_Rank() Over(Order By [Asset_Type],
    [Account],
    [Issuer],
    [Return_Bucket],
    [Age_Bucket],
    [Type_Bucket],
    [Risk_Bucket]) AS CohortID
 from Test_Table    

我尝试使用带有以下代码的 cte,但出现错误。

alter table Test_Table      
add CohortID float

With cte AS
(
    Select
    r = Dense_Rank() Over(Order By [Asset_Type],
        [Account],
        [Issuer],
        [Return_Bucket],
        [Age_Bucket],
        [Type_Bucket],
        [Risk_Bucket])
    from Test_Table 
)
UPDATE c
Set CohortID = r
FROM cte c;

如有任何想法或建议,我们将不胜感激。谢谢!

试试这个版本:

alter table Test_Table add CohortID float;
GO

WITH toupdate AS (
      SELECT r = Dense_Rank() Over(Order By [Asset_Type], t.*
      FROM Test_Table t
     )
UPDATE toupdate
    SET CohortID = r;

我怀疑您的查询错误是因为您没有在 CTE 的列列表中包含新列。