Sql server 将多行文字合并为一行
我有一组行显示员工的调动地点,如下所示。上一行的结束位置将是下一行的开始位置。有50000多名员工Sql server 将多行文字合并为一行,sql-server,Sql Server,我有一组行显示员工的调动地点,如下所示。上一行的结束位置将是下一行的开始位置。有50000多名员工 Employee name transfer_date start_location end_location AA 1/1/2017 Canada US AA 1/1/2018 US Italy AA 1/1/2019
Employee name transfer_date start_location end_location
AA 1/1/2017 Canada US
AA 1/1/2018 US Italy
AA 1/1/2019 Italy Australia
BB 2/1/2016 Spain US
BB 2/1/2019 US Luxembourg
我需要将其转换为:
Employee name start_location next_location1 next_location2 next_location3
AA Canada US Italy Australia
BB Spain US Luxembourg NULL
借助
行数
旋转是此处的一个选项:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY [Employee name] ORDER BY transfer_date) rn
FROM yourTable
)
SELECT
[Employee name],
MAX(CASE WHEN rn = 1 THEN start_location END) AS start_location,
MAX(CASE WHEN rn = 1 THEN end_location END) AS next_location1,
MAX(CASE WHEN rn = 2 THEN end_location END) AS next_location2,
MAX(CASE WHEN rn = 3 THEN end_location END) AS next_location3
FROM cte
GROUP BY
[Employee name]
ORDER BY
[Employee name];
表中的最大转移次数是多少(本例中为AA,共有3次转移)您的研究向您展示了哪些可能的方法?@George Joseph,可能的转账数量没有限制。在示例中,您已经停止了3次转账,并且提供的答案提供了一个模板,说明如何推断更多转账的相同情况。例如:在Tim提供的ans中,您可以为第四个位置转移添加rn=4的条件