【问题标题】:SQL append data to table using dense_rank()SQL 使用dense_rank() 将数据附加到表中
【发布时间】:2020-01-07 18:38:04
【问题描述】:

我一直在尝试拼凑一些我在谷歌上搜索过但没有任何运气的代码。我正在尝试向现有表添加一个新列。我可以使用选择查询中的以下代码查看该列:

我基本上想将此选择查询的结果附加到我的原始表中。

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;

任何想法或建议将不胜感激。谢谢!

【问题讨论】:

  • 你应该包括你得到的错误。

标签: sql tsql common-table-expression alter


【解决方案1】:

试试这个版本:

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 的列列表中包含新列。

【讨论】:

    猜你喜欢
    • 2019-01-30
    • 2018-12-05
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多