【问题标题】:sql query to group all the rows with same column valuesql查询将具有相同列值的所有行分组
【发布时间】:2023-01-06 23:09:20
【问题描述】:

|用户名 |租户 |

|空 | a001 |
|空 | a002 |
|空 | a002 |
|空 | a002 |
|空 | a001 |
|空 | a003 |
|空 | a002 |
|空 | a003 |
|空 | a001 |
|空 | a002 |

我想为具有相同租户 ID 的行将用户 ID 设置为“distinct_user_#”。我无法手动设置用户标识,因为租户标识是随机生成的

所以输出会是这样的

|用户名 |租户 |

| d_u_1 | a001 |
| d_u_2 | a002 |
| d_u_2 | a002 |
| d_u_3 | a003 |
| d_u_1 | a001 |
| d_u_3 | a003 |
| d_u_2 | a002 |
| d_u_3 | a003 |
| d_u_1 | a001 |
| d_u_2 | a002 |

有什么帮助吗?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您可以使用 dense_rank 函数生成此 ID:

    SELECT 'd_u_' + DENSE_RANK() OVER (PARTITION BY tenantid ORDER BY tenantid) AS userid,
           tenantid
    FROM   mytable
    

    【讨论】:

      【解决方案2】:

      我们可以在这里使用DENSE_RANK():

      SELECT 'd_u_' + CAST(DENSE_RANK() OVER (ORDER BY tenantid) AS varchar(12)) AS userid, tenantid
      FROM yourTable;
      

      【讨论】:

        猜你喜欢
        • 2019-05-10
        • 2016-05-21
        • 1970-01-01
        • 1970-01-01
        • 2021-01-12
        • 1970-01-01
        • 2018-08-09
        • 1970-01-01
        • 2017-04-23
        相关资源
        最近更新 更多