sql - 在 SQL 中的当前记录之前加入一条记录
问题描述
该表列出了特定任务的受让人。一次只能有一个,它可以是一个组或一个用户,每个都属于一个实体。输入新行时,表示受理人已更改。
我正在尝试显示与新受让人之间的转移。在下面的示例中,最早的转移是在 2021 年 7 月 16 日,当时受让人从实体 4444 的组 44 更改为从实体 3333 的用户 333(如下所示将它们连接起来)。
ID | 时间戳 | 团体 | 用户 | 实体 |
---|---|---|---|---|
1 | 21-07-2021 | 11 | 无效的 | 1111 |
2 | 20-07-2021 | 22 | 无效的 | 2222 |
3 | 2021 年 7 月 16 日 | 无效的 | 333 | 3333 |
4 | 2021 年 7 月 14 日 | 44 | 无效的 | 4444 |
预期的
ID | 时间戳 | 从 | 至 |
---|---|---|---|
1 | 21-07-2021 | 22_2222 | 11_1111 |
2 | 20-07-2021 | 333_3333 | 22_2222 |
3 | 2021 年 7 月 16 日 | 44_4444 | 333_3333 |
我为此使用 Microsoft SQL Server Studio 2018。
解决方案
您似乎想要构造“from”和“to”字符串。看起来像:
select t.id, t.timestamp, prev_egu as from_egu, egu as to_egu
from (select t.*, v.egu,
lag(v.egu) over (order by timestamp) as prev_egu
from t cross apply
(values (concat(entity, '_', coalesce(group, user))(
) v(egu)
) t
where prev_egu is not null;
推荐阅读
- ios - 当类型为 SatelliteFlyover 时,在 MapView 顶部显示 MKPolyline?
- ios - 如何向标签添加约束,使其始终与动态的 UITextView 相距 0 点?
- php - 使用文件名查找和替换多个 base64 图像
- c# - .NET Core 2.x 加载引用的程序集,在代码中没有类型引用
- c# - 无法使用 DataContract Name 属性将 JSON POST req 反序列化为 WCF
- ionic-framework - 在离子应用程序中,我想使用 InAppBrowser 从服务器打开所有链接
- json - 如何在没有密钥的情况下解析 JSON
- python - 使用 python 脚本运行程序时打印 shell 的时间命令结果
- facebook-messenger - 用户对帖子发表评论后如何向新用户发送消息
- c# - SignalR CORS 同源策略?